Задать вопрос
JastaFly
@JastaFly

PHP использовать класс из vendor?

Пытаюсь использовать класс MailValidator в проекте:
<?php 

namespace App;

use MailValidator;

class Application
{
    private $request;

    public function __construct()
    {
        if (!RequestValidator::checkRequestType('POST')) {
            throw new \Exception('Wrong request method');
        }
        if (RequestValidator::checkRequestIsEmpty($_POST)) {
            throw new \Exception('Empty request');
        }
        $this->request = $_POST;
    }

    public function run()
    {
        $mailValidator = new MailValidator();
        echo $mailValidator->validate($this->request['EMAIL']);
    }
}

сам класс:
<?php

class MailValidator
{
    private $regExp = '/^(([\wА-Яа-я]{1,})@([\wА-Яа-я]{1,}\.)+[A-Za-zА-Яа-я]{2,})$/ui';
    private $mailAddress;

    public function validate($mailAddress)
    {
        $this->mailAddress = $mailAddress;
        if($this->validateMailAddress()) {
            if ($this->checkMXRecord()) {
                throw new \Exception('Mail is valid');
            }
        }
        throw new \Exception('Mail is invalid');
    }

    private function validateMailAddress()
    {
        return preg_match($this->regExp, $this->mailAddress);
    }
    
    private function checkMxRecord()
    {
        $arMailAddress = explode('@', $this->mailAddress);
        return getmxrr($arMailAddress[1], $hosts);
    }
}

Лежит в папке vendor. Автозагрузка классов вроде настроена, вот composer.json:
{
  "require": {
    "php": ">=7.4",
    "ext-json": "*",
    "ext-sockets": "*",
    "apinyansky/mail_validator": "^1.0"
  },
  "autoload": {
    "psr-4": {
      "App\\": "app_src"
    }
  }
}

Но при запуске кода я получаю ошибку: Fatal error: Uncaught Error: Class 'MailValidator' not found in /var/www/otus.local/app_src/Application.php:24 Stack trace: #0 /var/www/otus.local/app.php(7): App\Application->run() #1 {main} thrown in /var/www/otus.local/app_src/Application.php on line 24
Подскажите в чём может быть проблема?!??
Заранее всем спасибо)
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
iNickolay
@iNickolay
У класса MailValidator не указан namespace
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@russeljo
Может так
use \MailValidator

Может надо задать namespace в файле класса

Или же, если это ваш класс, то переместить в папку "app_src"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы