Возможно, что-то тривиально, но у меня есть проблемы с базовой автозагрузкой. Я хочу создать проект песочницы только для тестирования новых решений, поэтому я создал следующую структуру:
Sandbox
|- index.php
|- composer.json
|- vendor
| |- {autogenerated content}
|- src
|- Working.php
файл composer.json
выглядит так:
{
"name": "vendor/sandbox",
"authors": [
{
"name": "foo",
"email": "[email protected]"}
],
"require": {
"phpunit/phpunit": "dev-master",
"phpunit/phpunit-mock-objects": "dev-master"},
"psr-4": {
"Sandbox\\": "src/"}
}
Конечно я бегаю composer.update
после изменений. Затем я написал тривиальное тело Working.php
:
<?php
namespace Sandbox;
class Working
{
public function __construct() {
echo "Hello World";
}
}
И конечно index.php
также:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Sandbox\Working;
new Working();
?>
Я проверил права доступа к этим файлам просто для уверенности, но когда я пытаюсь запустить, я получаю
PHP Fatal error: Class 'Sandbox\Working' not found in /var/www/Sandbox/index.php on line 6
Я понимаю, что это, вероятно, что-то тривиальное, но что здесь может быть не так?
В твоем composer.json
вам не хватает autoload
ключ.
Должно быть как
"autoload": {
"psr-4": {
"Sandbox\\": "src/"}
}
я верю
"psr-4": {
"Sandbox\\": "src/"}
Должно быть:
"autoload": {
"psr-4": {
"Sandbox\\": "src/"}
Итак, ваш файл будет:
{
"name": "vendor/sandbox",
"authors": [
{
"name": "foo",
"email": "[email protected]"}
],
"require": {
"phpunit/phpunit": "dev-master",
"phpunit/phpunit-mock-objects": "dev-master"},
"autoload": {
"psr-4": {
"Sandbox\\": "src/"}
}