Laravel大型项目系列教程(七)之7 扩展包和Artisan开发

本节教程将讲解扩展包开发和Artisan扩展开发,并浏览不同分辨率下的自适应效果。本节结束后整个教程就结束了,文章最后有完整版程序代码的下载。

1.扩展包开发

在前面开发中,我们经常要用到通知,如修改用户信息时视图要写

@if (Session::has(‘message’)) ::>> </div>@endif

在业务逻辑代码中需要使用

, $user)->, ));

现在我们这里实现一个简单的通知插件,先创建包:

这时会在项目根目录下多一个名为workbench的目录,里面存放的就是刚才创建的包,我们进入shiyanlou/notification目录,src/Shiyanlou/Notification目录是所有class的主目录,包括ServiceProvider。config、lang、migrations和views目录,就如你所猜测,包含了你创建的包的相应资源。包可以包含这些资源中的任意几个,就像一个”常规”的应用。

修改下包里composer.json中的authors:

“authors”: [{“name”: “shiyanlou”,”email”: “support@shiyanlou.com”}]

在项目根目录下执行:

$ php artisan dump-autoload

然后我们在app/config/app.php中的providers中增加:

‘Shiyanlou\Notification\NotificationServiceProvider’,

这步做完后启动开发服务器:

$ php artisan serve

如果启动成功,就说明扩展包的基础就搭建完成了。

现在我们在src/Shiyanlou/Notification下创建一个名为Notification.php的文件,修改:

\Notification;;= null;){$this->session = $session;}, $content){$this->session->put(‘notification_message’, ‘<divhljs-variable”>$type . ‘” data-am-alert><p></p>’ . $content . ‘</div>’);}){$this->addMessage(‘am-alert-primary’, $content);}){$this->addMessage(‘am-alert-secondary’, $content);}){$this->addMessage(‘am-alert-success’, $content);}){$this->addMessage(‘am-alert-warning’, $content);}){$this->addMessage(‘am-alert-danger’, $content);}{echo $this->session->pull(‘notification_message’, ”);}}

上面用到了Session,Session表示一次会话,就是从你打开浏览器窗口到关闭。

修改NotificationServiceProvider.php中的register()和provides():

{$this->app[‘notification’] = $this->app->share(function($app){return new Notification($this->app[‘session.store’]);});}{return array(‘notification’);}

上面是向Ioc容器注册类。

然后在src/Shiyanlou/Notification下创建一个名为Facades的文件夹,在Facades目录下创建一个名为Notification.php的文件,修改:

\Notification\Facades;use Illuminate\Support\Facades\Facade;{{return ‘notification’;}}

我们这里继承了Facade类,用Facades可以访问IoC容器中注册的类,有了IoC容器,我们可以在任何地方调用注册的类。

为了方便我们的使用,我们在app/config/app.php的aliases中增加一个别名:

‘Notification’ => ‘Shiyanlou\Notification\Facades\Notification’,

下面就来试试这个插件,把上面的

@if (Session::has(‘message’)) <div ::get(‘message’)[‘type’] }}” data-am-alert><> </div>@endif

替换成

{{ Notification::show() }}

, $user)->, ));

替换成

Notification::success(‘Modify successfully’);return Redirect::route(‘user.edit’, $id);

现在修改用户信息后提示成功的信息就能方便地显示出来:

简单的扩展包开发就完成了。

2.Artisan扩展开发

Artisan是Laravel中自带的命令行工具的名称,它提供了一些开发过程中有用的命令。我们可以编写自己的Artisan命令完成特定的功能,这里举一个开发导出用户数据的命令。首先我们创建一个新的命令类:

$ php artisan command:make ExportUsersCommand

执行完后我们会发现在app/commands生成了一个ExportUsersCommand.php的文件,这个就是我们自定义的命令类,然后我们需要注册命令,在app/start/artisan.php中增加:

Artisan::add(new ExportUsersCommand);人创造奇迹常常是在瞬间,

Laravel大型项目系列教程(七)之7 扩展包和Artisan开发

相关文章:

你感兴趣的文章:

标签云: