Intereting Posts
Поместите изображение в другое изображение с помощью PHP Можно ли автоматически преобразовать Java-код в PHP? Лучший способ отслеживания (прямой) загрузки файлов Запуск php-скрипта в качестве фонового процесса на сервере Wamp PHP / MySQL: как получить несколько значений из метода базы данных PHP Ошибка SMTP: не удалось подключиться к серверу: время ожидания подключения (110) с помощью PHPMailer и Outlook SMTP Доступ к свойствам XML, которые имеют двоеточие в имени с помощью PHP Удалить несколько запятых regex Не удается установить коробку Vagrant Laravel Homestead Как получить последний вставленный идентификатор таблицы MySQL в PHP? PDO Prepared Вставляет несколько строк в один запрос PHP: поиск изображений и ссылок с относительным путем в выходе и преобразование их в абсолютный путь Доступ к Google Диску для учетной записи службы Сохранение пользовательского поля продукта и его отображение на странице корзины Команда SQL не может получить предложение, связанное с словами

Полный пример автозагрузки композитора?

Я пытаюсь собрать все грани, которые я нашел об автозагрузке класса в композиторе, но я не могу заставить его работать. В каждом примере, который я вижу, отсутствует какая-то часть. В основном это сводится к двум файлам с 4 строками:

index.php

$loader = require 'vendor/autoload.php'; $loader->add('Vendor\\', __DIR__.'/../app/'); new Vendor_Package_Obj(); 

Приложение / Vendor / Упаковка / Obj.php

 class Obj {} 

Я также пробовал psr-4 и все мыслимые комбинации папок и имен для пакета Vendor Package Obj? но не повезло найти рабочее решение.

Как я могу автозагрузить файл с композитором с использованием любого из этих стандартов?

Согласно PSR-4 , полное имя класса ДОЛЖНО иметь имя пространства имен верхнего уровня, также известное как «пространство имен поставщиков», а подчеркивания не имеют особого значения ни в одной части полностью квалифицированного имени класса.

Попробуй это:

 cd ~ mkdir -p testproj/src/MyApp/Package cd testproj composer init && composer update 

Создайте свой index.php с этим контентом:

 <?php $loader = require 'vendor/autoload.php'; $loader->add('MyApp\\', __DIR__.'/src/'); $a = new MyApp\Package\Obj(); var_dump($a); 

И поместите класс Obj (src / MyApp / Package / Obj.php):

 <?php namespace MyApp\Package; class Obj {} 

Теперь, когда вы запускаете код:

 php index.php 

Вы должны получить это как результат:

 class MyApp\Package\Obj#2 (0) { } 

Также каталоги леса должны выглядеть так:

 testproj ├── composer.json ├── index.php ├── src │  └── MyApp │  └── Package │  └── Obj.php └── vendor ├── autoload.php └── composer ├── ClassLoader.php ├── autoload_classmap.php ├── autoload_namespaces.php ├── autoload_psr4.php └── autoload_real.php