Laravel 4 Laravel psr-0自动加载

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

我使用的是标准的laravel目录结构。我已将其添加到composer.json中

"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从控制器中引用它,则它可以正常工作。