$(function() { SyntaxHighlighter.config.bloggerMode = true; SyntaxHighlighter.config.clipboardSwf = 'http://static.oschina.net/js/syntax-highlighter-2.1.382/scripts/clipboard.swf'; SyntaxHighlighter.defaults['collapse'] = true; SyntaxHighlighter.all(); });//
Packages是向Laravel中添加功能最重要的途径。composer.json中require的都是包。关于包的详细说明请查看 API . 下面一起创建一个简单的Package :
1. 环境配置
我们以Artisan的workbench
命令来创建一个Package ,首先要配置 app/confg/workbench.php
2
3 return array(
4
5 'name' => 'brudeke',
6
7 'email' => 'xxxxxxxx@163.com',
8
9 );
2. 创建Package
其中vendor是厂商名称,用于区别相同名称的包;package是要创建的包名;
执行以上命令后会在根目录出现workbench目录,其中workbench/vendor/package/src/Vendor/Package目录下会自动生成PackageServiceProvider.php(以下称此文件为引导类),该文件相当于包的引导类。
3. 在包中添加功能类
在这里我们在包中添加一个工具类,在“引导类”的同级创建Utils/Turbo.php
2
3 namespace Vendor\Package\Utils;
4
5 use Illuminate\Http\RedirectResponse;
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
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是表示延迟加载服务提供器。
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 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 \Vendor\Package\Utils\Turbo;
32 });
33 }
34
35 /**
36 * Get the services provided by the provider.
37 *
38 * @return array
39 */
40 public function provides()
41 {
42 re
没有评论:
发表评论