2016-06-22 2 views
2

У меня есть каталог структураPsr-4 композитор автозагрузку собственный класс - не нашел

enter image description here

автозагрузку композитор:

"autoload": { 
    "psr-4": { 
    "model\\": "src/" 
    } 
}, 

мой класс

namespace model; 


class ClientAgent 
{ 
    private $pdo; 

    public function __construct(\PDO $pdo) 
    { 
     $this->pdo = $pdo; 
    } 

    public function sentAgent() 
    { 

    } 
} 

в index.php я пытался надстройку

use model\ClientAgent; но это ошибка, не найден класс? Зачем?

Редактировать после ответа

 "autoload": { 
     "psr-4": { 
     "model\\": "src/model/" 
     } 

    }, 

мой index.php

use model\ClientAgent; 

$loader=require_once __DIR__ . '/../vendor/autoload.php'; 

$clientAgent =new ClientAgent($pdo); 

ошибка Uncaught Ошибка: Class 'модель \ ClientAgent' не найден в C: \ XAMPP \ HTDOCS \ Wieloagenty \ index.php: 15

ответ

0

Мое предложение - представить префикс поставщика. Это может быть ваше имя разработчика, название вашей компании или имя приложения.

composer.json

"autoload": { 
    "psr-4": { 
    "YourApplication\\": "src/" 
    } 
}, 

Теперь, каждый класс в папке src и ниже нужен этот префикс поставщика на это пространство имен.

Давайте src\model\ClientAgent.php в качестве примера:

namespace YourApplication\Model; 

class ClientAgent 
{ 

Теперь FQCN (полное имя квалифицированного класс) является YourApplication\Model\ClientAgent, и вы можете использовать его как часть use даного.

// first require the Composer autoloader 
require_once __DIR__ . '/../vendor/autoload.php'; 

// declare which other classes you are using 
use YourApplication\Model\ClientAgent; 

$clientAgent = new ClientAgent($pdo); 

Важно!

После модификаций (для классов и файла composer.json) восстановите автозагрузчик композитора с помощью php composer.phar dumpautoload -o.

Composer будет сканировать полную src папки, включая вложенные папки для классов (так что вы будете иметь все классы от src\models\ и src\views самозарядных готовы).

+0

Спасибо, рабочий :) – Pablos

+0

Добро пожаловать :) –

0

"model\\": "src/" предоставит вам папку src/ в качестве базы для model -namespace. Так это даст вам model\model\Classname.

Изменить это:

"psr-4": { 
    "model\\": "src/model/" 
} 

При определении PSR-4 автозагрузчика в композитора, вы связать папку с определенным пространством имен.

Любые подпапки будут подпространством имен. Поэтому, если вы создадите папку в своей «моделирующей» папке, пространство имен будет: model\new-foldername\Classname и так далее.

Примечание: Если когда-нибудь вы обновляете файл composer.json, всегда необходимо выполнить команду: composer dump-autoload, чтобы композитор регенерировать все это кэшированные файлы.

+0

Вы запустили: 'composer dump-autoload' после смены composer.json? Если нет, вам нужно сделать это, чтобы композитор регенерировал файл автозагрузки. –

+0

@Pablos - Не уверен, что вы получили уведомление о моем комментарии (забыл указать вам). :) –

Смежные вопросы