我在php中创建了一个用于解析HTML文件的辅助方法的类。
我想在我的Laravel项目中使用这个类,但我是Laravel的新手,并且不清楚如何在Laravel 5项目中添加一个简单的类。
这可能吗?或者我是否需要为我的类创建一个编写器包,在某个地方托管它,然后require
在我的composer.json
文件中。这似乎包含了一个简单的PHP类很多工作,我希望有一个更简单的方法。
答案 0 :(得分:4)
目前看来,在Laravel 5(可能是设计)中没有一个很好/简单的方法。您可以采取的两种方法是
App
命名空间默认情况下,Laravel 5.0会在App\
文件夹中查找app/
前缀类,因此这样的内容应该可以正常工作
#File: app/Helpers/Myclass.php
<?php
namespace App\Helpers;
class Myclass
{
}
然后使用
创建您的课程$object = new App\Helpers\Myclass;
然而,这种方法依赖于您在App\
命名空间中创建类,并且如果App\
命名空间由Laravel拥有,或者由应用程序的开发人员拥有,则存在一些歧义。
PSR-4
自动加载器更好但更复杂的方法是在您自己的命名空间中创建类,然后通过注册新的PSR自动加载器告诉Laravel这个命名空间。
首先,您要创建类定义
#File: application-lib/Myclass.php
<?php
namespace Pulsestorm;
class Myclass
{
}
请注意,我们在根文件夹下创建了一个新文件夹,用于保存名为application-lib
的类。您可以将此文件夹命名为您喜欢的任何名称,因为在下一步中,您将向composer.json
文件的自动加载器部分添加一个部分
#File: composer.json
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Pulsestorm\\": "application-lib/"
}
},
我们添加的部分是
"Pulsestorm\\": "application-lib/"
对象的键(Pulsestorm\
)是您的命名空间。值(application-lib
)是composer应查找具有指定命名空间的类定义文件的文件夹。
将此内容添加到composer.json
后,您需要告诉Composer使用dumpautoload
命令重新生成自动加载缓存文件
$ composer dumpautoload
Generating autoload files
完成上述操作后,您应该可以使用
实例化您的课程$object = new Pulsestorm\Myclass;
“真正的”正确的方法是为你的助手类创建一个通用的作曲家包,然后将require
作曲家包打包到你的laravel项目中。然而,这可能比你想要一个简单的库助手更多的工作。
答案 1 :(得分:1)
如果您的类具有足够的通用性,可以在其他项目中使用它,那么最好的方法是将其作为包发布。
以下是使用Laravel 5创建软件包的方法:http://laravel.com/docs/5.0/packages