Laravel 模型在包中的位置?

Laravel 模型在包中的位置?,laravel,laravel-4,Laravel,Laravel 4,我希望在我的软件包中使用模型。我在laravel论坛/博客上看过,但找不到这个问题的确切答案 我的模型应该放在哪里?它们应该如何命名? 我知道如何自动加载我的模型等,但如果模型进入: panthro/package/src/models 并具有名称空间: panthro/package panthro/package/models 或位于: panthro/package/src/panthro/package/models 并具有名称空间: panthro/package panth

我希望在我的软件包中使用模型。我在laravel论坛/博客上看过,但找不到这个问题的确切答案

我的模型应该放在哪里?它们应该如何命名?

我知道如何自动加载我的模型等,但如果模型进入:

panthro/package/src/models
并具有名称空间:

panthro/package
panthro/package/models
或位于:

panthro/package/src/panthro/package/models
并具有名称空间:

panthro/package
panthro/package/models

什么是正确的,或者有其他解决方案吗?

您的模型可以驻留在任何地方,只要可以找到它们。然而,为了保持一致性,我建议您将它们放在
panthro/package/src/
(或您的包的名称)中,因为
src
文件夹几乎等同于您的Laravel主项目中的
app
文件夹

至于名称空间,我认为在整个软件包中保持名称空间尽可能一致是很好的,它通常以
Author\PackageName
开始,例如:

namespace Panthro\Package;
虽然我要比将包名命名为
package
更具体

如果你看一下laravel的插件库,你也可以了解它们是如何使用名称空间和文件夹结构的

例如:

-非常简单的库

-更全面、更大的代码库,但仍然易于遵循(结构方面)


根据您的软件包,如果您有多种类型的模型,最好为您的模型添加另一个级别的名称空间,否则就不必了。

谢谢,我是否也需要在名称空间中添加\models?你能告诉我你提到的拉威尔的例子吗?我想看一看。编辑了我的答案。愉快的编码。感谢您添加示例,但APIRouter似乎与您建议的相反,代码位于sjdaws/src/sjdaws/APIRouter下。干预也一样-images/src/Intervention/Image。另外,你知道有什么东西使用了我可以查看的模型吗?@panthro位置取决于你是使用PSR-0自动加载还是使用PSR-4自动加载。使用
src/
目录中的PSR-0,命名空间
\Panthro\Package\Models\User
中的类将位于
{vendor/}Panthro/Package/src/Panthro/Package/Models/User.php
中,而使用
src/
目录中的PSR-4自动加载则位于
{vendor/}Panthro/Package/src/Models/User.php
。如果我是你,我会考虑名称空间,因为自动加载会精确定义实际文件的放置位置。谢谢@alexrussell所以如果我使用PSR-0,名称空间将是panthro/package/models?另外,如何在PSR-0或PSR-4之间作出决定?