我正在使用盒子出现的标准Laravel目录结构。我已经将其添加到composer.json
"autoload": {
"classmap": [
"app/commands",
....
],
**"psr-0": {
"CARS": "app/"
}**
},
我有一个视图
<?php namespace Views;
class MyView {
public function Build()
{
return "Great !";
}
}
?>
和一个控制器
class MyController extends BaseController {
public function loadHome() {
$view = new ViewsMyView;
return $view->Build();
}
}
它说" class"视图 xview'找不到。
我已经使用PSR-0进行了Composer Auto-load,但是现在我想添加控制器并查看而无需重新运行作曲家,我相信PSR-0可以允许我这样做(如果我运行作曲家,它起作用btw)。
您基本上不是在尝试使用它的同时使用PSR-0
...
如果您告诉作曲家您有:
"psr-0": {
"CARS": "app/"
}
它将拼命寻找
中的文件app/CARS/*.php
,并且还会理解其上的所有文件均在CARS
名称空间下:
所以,您的班级必须在:
中/whatever/application/app/CARS/Views/MyView.php
,必须将其声明为
<?php namespace CARSViews;
class MyView {
public function Build()
{
return "Great !";
}
}
您需要将其包装到汽车名称空间
当我审查了作曲家版本1.8.6
时,我也有相同的问题,我转介给文档
在PSR-0键下,您相对于包根的root定义了从名称空间到路径的映射。请注意,这也支持梨式的非命名限制。
NOTE NAMESPACE声明应以结束,以确保自动加载器响应
{
"autoload": {
"psr-0": {
"Monolog\": "src/",
"Vendor\Namespace\": "src/",
"Vendor_Namespace_": "src/"
}
}
}
这是我感兴趣的地方,PSR-0样式不仅限于名称空间声明,但可以直接指定为班级级别。这对于全局名称空间中只有一个类的库可能很有用。例如,如果PHP源文件也位于软件包的根部,则可以这样声明:
{
"autoload": {
"psr-0": { "UniqueGlobalClass": "" }
}
}
注意您需要声明一条完整的路径,例如
文件结构是
/myProject
-/app
--/Acme
---/Repositories
----/MyClass
所以我的作曲家PSR-0看起来像
"psr-0": {
"Acme": "app/Acme/"
},
希望这对某人有帮助