Laravel 4 Laravel psr-0自动加载
我使用的是标准的laravel目录结构。我已将其添加到composer.json中Laravel 4 Laravel psr-0自动加载,laravel-4,composer-php,Laravel 4,Composer Php,我使用的是标准的laravel目录结构。我已将其添加到composer.json中 "autoload": { "classmap": [ "app/commands", .... ], **"psr-0": { "CARS": "app/" }** }, 我看到了一个风景 <?php namespace Views; class MyView { public function B
"autoload": {
"classmap": [
"app/commands",
....
],
**"psr-0": {
"CARS": "app/"
}**
},
我看到了一个风景
<?php namespace Views;
class MyView {
public function Build()
{
return "Great !";
}
}
?>
它说找不到类“Views\XView”
我已经在PSR-0上运行过composer auto load一次,但现在我想添加控制器和视图,而不必重新运行composer,我相信PSR-0允许我这样做(如果我运行composer,它可以工作,顺便说一句).您需要将其包装到CARS namespace mate中您需要将其包装到CARS namespace mate中您基本上没有使用
PSR-0
,而是尝试使用它
如果您告诉Composer您有:
"psr-0": {
"CARS": "app/"
}
它会拼命地在数据库中查找文件
app/CARS/*.php
并且还将了解其中的所有文件都位于CARS
命名空间下:
因此,您的班级必须在:
/whatever/application/app/CARS/Views/MyView.php
必须声明为
<?php namespace CARS\Views;
class MyView {
public function Build()
{
return "Great !";
}
}
您在尝试使用PSR-0时,基本上没有使用它
如果您告诉Composer您有:
"psr-0": {
"CARS": "app/"
}
它会拼命地在数据库中查找文件
app/CARS/*.php
并且还将了解其中的所有文件都位于CARS
命名空间下:
因此,您的班级必须在:
/whatever/application/app/CARS/Views/MyView.php
必须声明为
<?php namespace CARS\Views;
class MyView {
public function Build()
{
return "Great !";
}
}
当我查看composer版本1.8.6
时,我遇到了我提到的相同问题
在psr-0键下,定义从名称空间到路径(相对于包根)的映射。注意,这也支持PEAR样式的非名称空间约定
注意名称空间声明应以\结尾,以确保自动加载程序准确响应
{
"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/"
},
希望这能帮助别人当我回顾composer版本1.8.6时,我遇到了我提到的相同问题
在psr-0键下,定义从名称空间到路径(相对于包根)的映射。注意,这也支持PEAR样式的非名称空间约定
注意名称空间声明应以\结尾,以确保自动加载程序准确响应
{
"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/"
},
希望这对其他人有所帮助我确实尝试将MyView.php中的名称空间更改为CARS\Views,但没有乐趣-未找到同一个类错误。但是,如果我完全删除了名称空间,并使用new\MyView从控制器中引用它,它就可以正常工作。请检查Antonios示例。我确实尝试过将MyView.php中的名称空间更改为CARS\Views,但没有乐趣-找不到同一个类错误。但是,如果我完全删除名称空间并使用new\MyView从控制器中引用它,则它可以正常工作。