我希望我的自定义库的行为与Laravel的行为类似

时间:2014-04-01 14:32:02

标签: php laravel

你知道Laravel课程是在飞行中使用的。如:

Auth::login()

我添加了自己的自定义库HTMLER()然后我可以像Laravel那样表现?我只是需要我的功能才能在没有我的情况下实现它,以便在每次尝试时都能实现它。

例如,我有一个我想要使用的函数get_files()

HTMLER::get_files()

HTML->get_files()

每当我想要而不是每次都要创建一个类的实例时:

new HTMLER();
$x->get_files()

太尴尬......

2 个答案:

答案 0 :(得分:3)

你已经上过课了,所以应该很容易。

确保您的班级位于正在自动加载的目录中。您可以在composer.json文件中看到自动加载的目录。或者你可以根据需要添加另一个目录。

服务提供商

为您的班级创建服务提供商。再次,确保它在某个自动加载的地方。这基本上是为了告诉Laravel如何在你需要的时候上课。

use Illuminate\Support\ServiceProvider;

class HtmlerServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('Htmler', function()
        {
            return new Htmler; // Name of your class, be sure to include the namespace     if you are using one.
        });
    }
}

请务必将您的服务提供商添加到providers中的config/app.php数组中。

'Htmler',

门面

接下来,您可以创建Facade。 (再次自动加载)。告诉Laravel你希望能在你需要的时候给你的课程打电话。

use Illuminate\Support\Facades\Facade;

class Htmler extends Facade {

    protected static function getFacadeAccessor() { return 'Htmler'; }

}

别名

如果您愿意,您还可以为Facade创建一个别名,以便您可以使用您想要的名称...只需添加到aliases中的config/app.php数组即可。简单的例子。

'HTMLER' => 'Htmler',

这些内容几乎来自http://laravel.com/docs/facadeshttp://laravel.com/docs/ioc#service-providers

的文档

答案 1 :(得分:1)

以下是我开始执行此操作时所遵循的教程:http://fideloper.com/create-facade-laravel-4