class 未找到自动加载 psr-4
class not found autoloading psr-4
我正在学习 Composer 自动加载。我对 PSR-4 有一些疑问。
我正在学习本教程:https://vegibit.com/composer-autoloading-tutorial/
我已经检查了几个小时的代码,但是当我在浏览器中加载脚本时仍然遇到同样的问题:
Fatal error: Uncaught Error: Class 'VegibitLibraryGreeting' not found
in C:\PHPWebPages\aldemo\aldemo4\index.php:5 Stack trace: #0 {main}
thrown in C:\PHPWebPages\aldemo\aldemo4\index.php on line 5
我试过类似问题中提出的几种解决方案,但都没有解决。
我附上一些截图:
请有人帮我找出为什么会发生这个错误。
提前致谢。
备注:
我将在解决方案之后展示新代码,以便任何遇到相同问题的人都可以查看解决方案:
greeting.php:
您不能在同一个文件中声明两个命名空间。命名空间声明应该在 PHP 文件的最开头。
您还应该声明名称空间,因为它们在 composer.json
:
中显示
namespace Vegibit\Library;
将此代码拆分为单独的文件。
index.php:
$vb = new Vegibit\Library\Greeting();
我正在学习 Composer 自动加载。我对 PSR-4 有一些疑问。
我正在学习本教程:https://vegibit.com/composer-autoloading-tutorial/
我已经检查了几个小时的代码,但是当我在浏览器中加载脚本时仍然遇到同样的问题:
Fatal error: Uncaught Error: Class 'VegibitLibraryGreeting' not found in C:\PHPWebPages\aldemo\aldemo4\index.php:5 Stack trace: #0 {main} thrown in C:\PHPWebPages\aldemo\aldemo4\index.php on line 5
我试过类似问题中提出的几种解决方案,但都没有解决。
我附上一些截图:
请有人帮我找出为什么会发生这个错误。 提前致谢。
备注:
我将在解决方案之后展示新代码,以便任何遇到相同问题的人都可以查看解决方案:
greeting.php:
您不能在同一个文件中声明两个命名空间。命名空间声明应该在 PHP 文件的最开头。
您还应该声明名称空间,因为它们在 composer.json
:
namespace Vegibit\Library;
将此代码拆分为单独的文件。
index.php:
$vb = new Vegibit\Library\Greeting();