首页 > 编程 > PHP > 正文

Laravel Packages开发

2020-03-22 18:31:19
字体:
来源:转载
供稿:网友
  •   Packages是向Laravel中添加功能最重要的途径。composer.json中require的都是包。关于包的详细说明请查看API. 下面一起创建一个简单的Package :

      1. 环境配置

      我们以Artisan的workbench命令来创建一个Package ,首先要配置app/confg/workbench.php  

    1 <?php2 3 return array(4 5     'name' => 'brudeke',    6 7     'email' => 'xxxxxxxx@163.com',8 9 );

     

     2. 创建Package

      其中vendor是厂商名称,用于区别相同名称的包;package是要创建的包名;  

    1 php artisan workbench vendor/package --resources

      执行以上命令后会在根目录出现workbench目录,其中workbench/vendor/package/src/Vendor/Package目录下会自动生成PackageServiceProvider.php(以下称此文件为引导类),该文件相当于包的引导类。

      

      3. 在包中添加功能类

      在这里我们在包中添加一个工具类,在“引导类”的同级创建Utils/Turbo.php  

     1 <?php  2  3 namespace Vendor/Package/Utils; 4  5 use Illuminate/Http/RedirectResponse; 6  7 html' target='_blank'>class Turbo { 8  9     public function __construct() {}10 11     public function setUp(){12         echo "this is a tool";13     }    14 }

      4. 创建Facades

      Facades的功能就是美化类,可以使成员函数以静态成员的方式调用,在引导类同级创建Facades/Turbo.php  

     1 <?php  2 namespace Vendor/Package/Facades; 3  4 use Illuminate/Support/Facades/Facade; 5  6 class Turbo extends Facade { 7  8     protected static function getFacadeAccessor() { 9         return 'turbo';10     }11 }

      

      5. 绑定功能类到Ioc容器

      修改引导类如下,其中$defer是表示延迟加载服务提供器。  

     1 <?php  2 namespace Vendor/Package; 3  4 use Illuminate/Support/ServiceProvider; 5  6 class PackageServiceProvider extends ServiceProvider { 7  8     /** 9      * Indicates if loading of the provider is deferred.10      *11      * @var bool12      */13     protected $defer = true;14 15     /**16      * Bootstrap the application events.17      *18      * @return void19      */20     public function boot(){21         $this->package('vendor/package');22     }23 24     /**25      * Register the service provider.26      *27      * @return void28      */29     public function register(){30         $this->app->bindShared('turbo', function(){31             return new /Vendor/Package/Utils/Turbo;32         });33     }34 35     /**36      * Get the services provided by the provider.37      *38      * @return array39      */40     public function provides()41     {42         return array('turbo');43     }44 45 }

      

      6.修改配置app/config/app.php

      在providers数组中添加以下代码:

    1 "providers" => array(2     'Vendor/Package/PackageServiceProvider',      3 ),

      在aliases数组中添加别名Turbo:

    1 'aliases' => array(2     'Turbo'            =>  'Vendor/Package/Facades/Turbo',3 ),

      接下来就可以在项目任何地方以Turbo::setUp()的形式运用包了。

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表