Код: https://github.com/WalkWeb/fuckingautoload Попытка запустить index.php приводит к ошибке: Fatal error: Class 'myapp\web\Page' not found in /var/www/myapp.loc/index.php on line 9 До этого никогда не использовал автозагрузчик из composer - подскажите, где ошибка?
да Но цель не просто сделать "лишь бы какой автозагрузчик", а понять, почему автозагрузчик из composer не работает.
а как он его увидит, если он не в vendor лежит, а другого путя к нему никакого не прописано? --- Добавлено --- кстати, я вот не пользуюсь автолоадером композера для загрузки того, что приходит не из композера. я делаю как-то так: PHP: /* autoload */ /* это композерный автолоад, пусть он подгружает те либы, которые поставлены через композер */ require 'vendor/autoload.php'; /* а это мой автолоад, который подгружает моё оттуда, где я это создаю */ spl_autoload_register(function ($class) { $class = strtolower($class); $file = SrcPath . '/lib/' . str_replace('\\', '/', $class) . '.php'; if (!file_exists($file)) { return false; } require $file; return true; }); /* /autoload */
вообще не догоняю всех этих модных "dirname(__FILE__)" ведь __DIR__ и так уже директория, нах ее через функцию получать?!
Это понятно, но композер вроде как не одним специалистом написан, и вот это PHP: $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); куда логичнее можно написать так PHP: $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); Судя по коммитам __DIR__ появился после пхп 5.3. Теперь все понятно
Код (Text): { "autoload": { "psr-4": {"MyNamespace\\": "srcDirForMyNamespace/"} } } Для файлов, где нет неймспейса (к примеру, набор функций): Код (Text): { "autoload":{ "files":["src/MyFuntions.php"] } }
Код (Text): require __DIR__ . '/vendor/autoload.php'; https://getcomposer.org/doc/01-basic-usage.md#autoloading
Да знаю я это все) Вы не догоняете в чем проблема - у меня на другом проекте все нормально работает, я даже на этом починил - часа два сидел, искал в чем причина, в итоге в какой-то момент все заработало, а я так и не понял, в чем была ошибка. Это как не компилируется программа, а потом оказалось, что запятую забыл - хочу понять где закралась ошибка.