• Laravel Packages 开发


      Packages是向Laravel中添加功能最重要的途径。composer.json中require的都是包。关于包的详细说明请查看 API . 下面一起创建一个简单的Package :

      1. 环境配置

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

    1 <?php
    2 
    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 VendorPackageUtils;
     4 
     5 use IlluminateHttpRedirectResponse;
     6 
     7 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 VendorPackageFacades;
     3 
     4 use IlluminateSupportFacadesFacade;
     5 
     6 class Turbo extends Facade {
     7 
     8     protected static function getFacadeAccessor() {
     9         return 'turbo';
    10     }
    11 }

      

      5. 绑定功能类到Ioc容器

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

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

      

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

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

    1 "providers" => array(
    2     'VendorPackagePackageServiceProvider',      
    3 ),

      在aliases数组中添加别名Turbo:

    1 'aliases' => array(
    2     'Turbo'            =>  'VendorPackageFacadesTurbo',
    3 ),

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

  • 相关阅读:
    用Python实现多核心并行计算
    Sublime Text 中文乱码
    Python_pickle
    New blog
    git Bash常用命令
    用TTS实现文本转语音
    bc#54 div2
    用Python制作新浪微博爬虫
    hdu5000 背包dp
    mac下配置Qt for Android+iOS
  • 原文地址:https://www.cnblogs.com/brudeke/p/4213956.html
Copyright © 2020-2023  润新知