В настоящее время я пытаюсь использовать автозагрузку PSR-0 с Composer, но я получаю следующую ошибку:
Fatal error: Class 'Twitter\Twitter' not found
Моя структура каталогов выглядит так:
- Project - src - Twitter Twitter.php - vendor - Test index.php
Мой файл index.php выглядит так:
<?php use Twitter; $twitter = new Twitter();
Мой файл Twitter.php выглядит так
<?php namespace Twitter; class Twitter { public function __construct() { // Code Here } }
И, наконец, мой композитор.json выглядит так:
{ "require": { "phpunit/phpunit": "3.8.*@dev", "guzzle/guzzle": "3.7.*@dev" }, "minimum-stability": "dev", "autoload": { "psr-0": { "Twitter" : "src/Twitter" } } }
Я немного запутался. Я исхожу из фона C #, и этот способ работы смущает меня. Каков правильный способ использования автозагрузки PSR-0?
В вашем composer.json используйте:
"autoload": { "psr-0": { "": "src/" } }
или
"autoload": { "psr-0": { "Twitter\\": "src/" } }
а затем запустите php composer.phar dump-autoload
использование
"psr-0": { "Twitter" : "src/" }
Это инструктирует композитора создать автозагрузчик, который будет выглядеть в src
для всего, начиная с пространства имен Twitter
. И поскольку это PSR-0
, пространство имен рассматривается как папка и добавляется к объявленному пути, поэтому вы не должны включать его в часть пути в composer.json
Прежде всего,
Мой файл index.php выглядит так:
use Twitter; $twitter = new Twitter();
Если это ваш index.php, вы забыли сначала включить сценарий автозагрузки композитора.
require __DIR__ . '/vendor/autoload.php';
Подробнее см. https://getcomposer.org/doc/01-basic-usage.md#autoloading .
В вашем index.php есть ошибка: следует use Twitter\Twitter; $twitter = new Twitter();
use Twitter\Twitter; $twitter = new Twitter();
или $twitter = new Twitter\Twitter();
Это очень поздний ответ, но первое, что вам нужно сделать для «автозагрузки», – это иметь версию PHP версии 5.6 и выше.