我编写了一个简单的帮助器类,将其放在app\Helpers\MyHelper.php
中,并在app.php
配置文件中为它创建了一个别名:
'MyHelper' => App\Helpers\MyHelper::class,
问题在于,现在我需要使用类构造函数来初始化其中的一些默认值。但是,__construct
函数永远不会被调用。显然,因为它永远不会被初始化。
问题是,我如何(或在何处)正确初始化辅助类,以便初始化它的默认值?
我的第一个想法:AppServiceProvider.php
文件和boot()
功能。
我在那里放了一条new MyHelper();
线并且它正在工作,但是我想知道这是否是一种正确的方式呢?
答案 0 :(得分:0)
你可以创建helper类有静态类,所以不需要创建类的实例 例如
<?php
namespace App\Helpers;
class HelperFunction {
public static function createGroup() {
}
因此您可以使用use
关键字在控制器中导入类,并访问
HelperFunction::createGroup();
答案 1 :(得分:0)
通常,服务提供商可以自行启动您的应用程序。文档并没有对AppServiceProvider
说太多,但似乎一般来说就是引导你的应用程序。
如果您想要走安全路线,可以使用php artisan make:provider MyHelperServiceProvider
创建新的服务提供商,并将其添加到providers
文件的config/app.php
数组中。
它看起来与AppServiceProvider
相同,但根据您当前的代码库,将该帮助程序放入其自己的服务提供程序可能更清晰。
我也只是一个初学者,但对我来说似乎都很好。
更新好的,找到了文档中的重要部分:https://laravel.com/docs/5.5/lifecycle
最后一段说:
默认情况下,
AppServiceProvider
相当空。此提供程序是添加应用程序自己的引导和服务容器绑定的好地方。当然,对于大型应用程序,您可能希望创建多个服务提供程序,每个服务提供程序都具有更细粒度的引导类型。