2015-11-25 6 views
0

Я только что начал новый проект PHP и прямо перед собой, у меня проблемы с автозагрузчиком. Я искал ошибку и проконсультировался с документацией (http://www.php-fig.org/psr/psr-4/), но проблема не устранена.композитор autoload не работает

Таким образом, я создал минимальный пример, чтобы сузить причину ошибки - тем не менее, даже при таком минимальном примере, он не будет работать :(

Моя структура папок, как это:

+ src/ 
| + Xyz.php 
+ composer.json 
+ test.php 

Вот мой код

composer.json:

{ 
    "name": "sg/ABC", 
    "description": "abc", 
    "autoload": { 
     "psr-4": { 
      "sg\\ABC\\": "src/" 
     } 
    } 
} 

Xyz.php:

<?php namespace sg\ABC; 
    class Xyz 
    {} 
?> 

test.php:

<?php namespace sg\ABC; 
    use sg\ABC\Xyz; 
    $a = new Xyz(); 
?> 

Даже если работает composer install не показывает никаких ошибок, я сразу получаю эту ошибку при выполнении кода:

$ php test.php 
PHP Fatal error: Class 'sg\ABC\Xyz' not found in /dir/x/test.php on line 5 

Fatal error: Class 'sg\ABC\Xyz' not found in /dir/x/test.php on line 5 

также, работает composer dump-autoload (как это было предложено кое-где в этой доске) не помогает

ответ

1

Вы все еще n Чтобы включить загруженные библиотеки, введите composer autoload.php file.

+0

Да, я забыл, что в минимальном примере. Хотя, добавив его в пример, он сработал, но фактического кода все еще не было. По какой-то причине (которую я до сих пор даже не понимаю) он работает теперь после копирования части кода из-за ее части в новый репозиторий и сначала добавления пустых классов, а затем кода. * Facepalm * – Xenonite

1

Вам потребуется автозагрузчик. Обычно это require_once "path/to/vendor/autoload.php".

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