我很难理解如何使用psr-4
.
在加载 vagrant 并设置和测试所有变量后,Homestead.yaml
我准备了一个文件结构如下:
\app
\folder
-- test.php
\vendor
\composer
-- autoload.php
-- index.php
-- composer.json
以下是我的代码:
index.php
<?PHP
namespace app;
require('vendor/autoload.php');
$object = new folder\test();
作曲家.json
"autoload":{
"psr-4":{
"app\\": "app"
}
}
测试文件
<?php
namespace app\folder;
class test
{
function __construct ()
{
echo 'construction done right.';
}
}
但是,在尝试访问该页面后,这些是页面上显示的错误消息:
(!) 致命错误:未捕获的错误:在第 6 行的 /home/vagrant/web/sites/app/index.php 中找不到
“app\folder\test”类(!)错误:“app\folder\test”类在第 6 行的 /home/vagrant/web/sites/app/index.php 中找不到
你能帮我理解并修复这个错误吗?
它不起作用,因为您已经告诉 Composerapp
命名空间中的类在app
子目录中,但没有app
子目录。
整个应用程序存储在app
目录中,它的名称对于应用程序来说并不重要。app
命名空间的类存储在当前目录中,子命名空间存储在同名的子目录中。
因此,您的composer.json
文件应为:
"autoload": {
"psr-4": {
"app\\": ""
}
}
或者,更清楚地说,您可以将.
(当前目录)作为app\
命名空间的位置:
"autoload": {
"psr-4": {
"app\\": "."
}
}
在composer dump-autoloader
主应用程序目录中运行更改后,它将开始工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句