我是靠谱客的博主 傲娇夏天,最近开发中收集的这篇文章主要介绍laravel 门面和服务提供者模式的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 首先定义ServiceContainer ,也就是实现业务逻辑的接口,例子为payment.php

 1 <?php
 2 
 3 namespace AppPayment;
 4 
 5 
 6 class Payment
 7 {
 8     
 9     public function add($a, $b)
10     {
11         return $a + $b;
12     }
13 }

2. 定义一个ServiceProvider供其他地方使用,也就是服务提供者。例子为PaymentServiceProvider.php

<?php

namespace AppPayment;

use IlluminateSupportServiceProvider;

class PaymentServiceProvider extends ServiceProvider
{
    /**
     * @var bool
     */
    protected $defer = false;

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('Payment', function () {
                return new Payment();
            }
        );
    }

    /**
     * @return array
     */
    public function provides()
    {
        return array('Payment');
    }
}

3. 在app/config.php中的providers数组中加入ServiceProvider,让系统自动注册

1 'providers' => [
2 
3     //其他服务提供者
4 
5     AppPaymentPaymentServiceProvider::class,
6 ],

4. 调用方法
第一种方法:

 1 <?php
 2 
 3 namespace AppHttpControllers;
 4 
 5 use IlluminateSupportFacadesApp;
 6 
 7 class PaymentController extends Controller
 8 {
 9 
10     public function test()
11     {
12         $res = App::make("Payment");
13         echo $res->add(1, 2);
14       
15     }
16 }

这样太麻烦,还需要用make来获取对象,为了简便,就可以使用门面功能
第二种方法:
定义门面pay

 1 <?php
 2 namespace AppPaymentFacades;
 3 
 4 use IlluminateSupportFacadesFacade;
 5 
 6 /**
 7  * Created by PhpStorm.
 8  * User: Yuki
 9  * Date: 2017/11/29
10  * Time: 11:30
11  */
12 class Pay extends Facade
13 {
14     /**
15      * @return string
16      */
17     protected static function getFacadeAccessor()
18     {
19         return 'Payment';
20     }
21 }

在控制器里就可以直接调用了

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Yuki
 5  * Date: 2017/11/29
 6  * Time: 15:09
 7  */
 8 
 9 namespace AppHttpControllers;
10 
11 use AppPaymentFacadesPay;
12 use IlluminateSupportFacadesApp;
13 
14 class PaymentController extends Controller
15 {
16 
17     public function test()
18     {
19        //$res = App::make("payment");
20        //echo $res->add(1, 2);
21        echo  Pay::add(1, 2);
22 
23     }
24 }

 

转载于:https://www.cnblogs.com/hexuejuan/p/8034294.html

最后

以上就是傲娇夏天为你收集整理的laravel 门面和服务提供者模式的使用的全部内容,希望文章能够帮你解决laravel 门面和服务提供者模式的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部