Laravel中注册Facades的步骤。具体如下:
在Laravel中将类注册为Fcade可以使用Ioc容器,每次使用这个类的时候只会初始化一次类,类似单例模式,而且可以像使用静态方法调用类的方法,下面是在Laravel中注册Facades的步骤。
1.在项目app目录的Providers/AppServiceProvider.php中的register方法新增方法,代码如下。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/** * Register any application services. * * @return void */{ $this->registerTestModel();}{ $this->app->singleton('testmodel', function ($app) { $model = 'AppModelsTest'; return new $model(); }); $this->app->alias('testmodel', 'AppModelsTest');} |
这里把命名空间是AppModels的Test类注册为单例模式,并且取个别名testmodel.这个Test类的文件位置app/Models/Test.php.
2.建立一个Facade类
在项目根目录appFacades目录新增文件,如Test.php,代码如下,目录不存在可以新建一个。
通过继承Facade,重载getFacadeAccessor方法,返回之前绑定的单例模式的类的别名。
3.使用Facade
经过前面的步骤后,可以使用Test这个Facade了,如下示例是在控制器中使用Facade的方式。
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<?phpnamespace AppHttpControllers;use AppFacadesTest;use IlluminateRoutingController;class TestController extends Controller{ public function __construct() { Test::show(); Test::show(); }} |
先看看这个原始类Test.php的内容:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?phpnamespace AppModels;use IlluminateDatabaseEloquentModel;class Test extends Model{ protected $table = 'tt'; public static $times = 0; public function __construct() { self::$times++; parent::__construct(); } public function show() { echo self::$times . '<br>'; }} |
经过注册Facade后,调用show方法就是Test::show()的形式,并且类似单例模式不会多次实例化,调用也十分简单。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END















请登录后发表评论
注册
社交帐号登录