Laravel Packages 开发
Packages是向Laravel中添加功能最重要的途径。composer.json中require的都是包。关于包的详细说明请查看 API . 下面一起创建一个简单的Package :
1. 环境配置
我们以Artisan的workbench
命令来创建一个Package ,首先要配置 app/confg/workbench.php
<?php return array( 'name' => 'brudeke', 'email' => 'xxxxxxxx@163.com', );
2. 创建Package
其中vendor是厂商名称,用于区别相同名称的包;package是要创建的包名;
php artisan workbench vendor/package --resources
执行以上命令后会在根目录出现workbench目录,其中workbench/vendor/package/src/Vendor/Package目录下会自动生成PackageServiceProvider.php(以下称此文件为引导类),该文件相当于包的引导类。
3. 在包中添加功能类
在这里我们在包中添加一个工具类,在“引导类”的同级创建Utils/Turbo.php
<?php namespace Vendor\Package\Utils; use Illuminate\Http\RedirectResponse; class Turbo { public function __construct() {} public function setUp(){
echo "this is a tool";
}
}
4. 创建Facades
Facades的功能就是美化类,可以使成员函数以静态成员的方式调用,在引导类同级创建Facades/Turbo.php
<?php
namespace Vendor\Package\Facades; use Illuminate\Support\Facades\Facade; class Turbo extends Facade { protected static function getFacadeAccessor() {
return 'turbo';
}
}
5. 绑定功能类到Ioc容器
修改引导类如下,其中$defer是表示延迟加载服务提供器。
<?php
namespace Vendor\Package; use Illuminate\Support\ServiceProvider; class PackageServiceProvider extends ServiceProvider { /**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = true; /**
* Bootstrap the application events.
*
* @return void
*/
public function boot(){
$this->package('vendor/package');
} /**
* Register the service provider.
*
* @return void
*/
public function register(){
$this->app->bindShared('turbo', function(){
return new \Vendor\Package\Utils\Turbo;
});
} /**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return array('turbo');
} }
6.修改配置app/config/app.php
在providers数组中添加以下代码:
"providers" => array(
'Vendor\Package\PackageServiceProvider',
),
在aliases数组中添加别名Turbo:
'aliases' => array(
'Turbo' => 'Vendor\Package\Facades\Turbo',
),
接下来就可以在项目任何地方以Turbo::setUp()的形式运用包了。
Laravel Packages 开发的更多相关文章
- 基于Laravel+Swoole开发智能家居后端
基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基 ...
- 使用laravel框架开发接口时ajax post请求报错419
nginx服务器,使用laravel框架开发后台接口.get请求正常,但是post请求一直报错.H5和APP都不成功,code=419. 解决办法: 找到 VerifyCsrfToken.php文件( ...
- Laravel 代码开发最佳实践
我们这里要讨论的并不是 Laravel 版的 SOLID 原则(想要了解更多 SOLID 原则细节查看这篇文章)亦或是设计模式,而是 Laravel 实际开发中容易被忽略的最佳实践. 内容概览 单一职 ...
- 转:Laravel 项目开发规范
文件介绍很好 值得细细看看 https://www.jianshu.com/p/e464a35e5ed2 https://learnku.com/docs/laravel-specification/ ...
- 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)
laravel学院 简介 对于那些使用 Windows 操作系统的同学来说,Homestead 和 LaraDock 虽说支持 Windows 系统,但是对初学者来说,安装配置起来还是有一定复杂度的, ...
- 学习 Laravel - Web 开发实战入门笔记(1)
本笔记根据 LearnKu 教程边学边记而成.该教程以搭建出一个类似微博的Web 应用为最终成果,在过程中学习 Laravel 的相关知识. 准备开发环境 原教程使用官方推荐的 Homestead 开 ...
- Laravel 虚拟开发环境 Homestead
简介 Laravel 致力于让你在 PHP 开发过程中更加轻松愉快,这其中也包括本地开发环境的搭建. Vagrant 提供了一种简单.优雅的方式来管理和配置虚拟机. Laravel Homestead ...
- laravel本地开发的项目部署到服务器上
不建议用ftp,建议用git.svn等工具从你的开发服务器上拉取.或者使用一些自动构建发布的工具.如果非要用ftp上传,建议用以下步骤: 服务器上安装composer,并使用`composer sel ...
- Laravel 项目开发环境配置
1.首先安装Laravel 依赖管理包工具 Composer (前提是本地装好了PHP php -v) php -r "copy('https://install.phpcomposer. ...
随机推荐
- 两个string数组对应比较
最近做的array string类型对比.这个可能比较复杂,用的是linq 是请教别人的,我在这里记录一下 jquery 方法里面的数组 function arrtxt() { var arrt= [ ...
- MySQL行级锁、表级锁、页级锁详细介绍
原文链接:http://www.jb51.net/article/50047.htm 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , ...
- Linux GCC
//test.c #include <stdio.h> int main() { printf("Hello World!\n"); ; } One Shot gcc ...
- 最短路(Dijkstra模板题)
就不写题目链接了 Sample Input 5 5 点个数a,边个数b 1 2 20 点,点,权值 2 3 30 3 4 20 4 5 20 1 5 100 求出1到a的最短距离 Sample Out ...
- NASM mode for Emacs
NASM mode for Emacs Quick post for those Emacs users out there. The common assembler used on GNU ...
- 理解JMS规范中消息的传输模式和消息持久化
http://blog.csdn.net/aitangyong/article/category/2175061 http://blog.csdn.net/aitangyong/article/det ...
- SqlServer sys.partition_view
--查看partition的四个视图 select * from sys.partition_functions--查看分区函数 select * from sys.partition_paramet ...
- LeeCode-Spiral Matrix II
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
- 【转】android 电池(三):android电池系统
关键词:android电池系统电池系统架构 uevent power_supply驱动 平台信息: 内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV3 ...
- html image -- data:image/png;base64
1, data:image/png;base64 <!DOCTYPE HTML> <html> <head> <meta http-equiv=" ...