就目前而言,在 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 autoloader
更好但更复杂的方法是在你自己的命名空间中创建类,然后通过注册一个新的 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 项目中。然而,对于一个简单的库助手来说,这可能比您愿意承担的工作要多。