简单几步写一个laravel扩展包
2017-02-21 00:00
260 查看
摘要: laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个laravel扩展包。
laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个laravel扩展包。
进入到packages创建我们的目录结构。
扩展包的格式为:[vendor name]/[package name],
最终结果如下所示:
然后,执行:
然后移动app/Providers/HelloworldServiceProvider.php到packages/onlyus/helloworld/src下,并修改相应的namespace,并添加注册新的Service Provider到config/app.php文件中。
在Service Provider注册view文件
修改controller中index函数
最终结果
代码
laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个laravel扩展包。
全新的laravel5.4环境安装
composer create-project laravel/laravel --prefer-dist .
创建文件夹及整理目录结构
在项目根目录下创建一个packages,所有的扩展文件都放在此目录下。进入到packages创建我们的目录结构。
扩展包的格式为:[vendor name]/[package name],
mkdir -p onlyus/helloworld/src
为扩展创建composer.json文件
每个扩展都需要有一个composer.json文件,进入到onlyus/helloworld文件夹下,执行:composer init
最终结果如下所示:
{ "name": "onlyus/helloworld", "description": "demo-package helloworld", "license": "MIT", "authors": [ { "name": "zhoubo", "email": "congminghaoxue@foxmail.com" } ], "minimum-stability": "dev", "require": {} }
加载扩展
进到项目根目录下,修改项目的composer.json文件:"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/", "Onlyus\\Helloworld\\": "packages/onlyus/helloworld/src" } },
然后,执行:
composer dump-autoload
创建ServiceProvider
Service Provider是一个类,它将包含关于包的主要信息:使用什么控制器,用什么Routes文件或视图加载等,可以看它作为一组规则的包。php artisan make:provider HelloworldServiceProvider
然后移动app/Providers/HelloworldServiceProvider.php到packages/onlyus/helloworld/src下,并修改相应的namespace,并添加注册新的Service Provider到config/app.php文件中。
创建Controller和routes
分别创建文件packages/onlyus/helloworld/src/HelloworldController.php和packages/onlyus/helloworld/src/routes.phpnamespace Onlyus\Helloworld; use App\Http\Controllers\Controller; class HelloworldController extends Controller { public function index() { reutnr 'hello world'; } } # routes.php内容 Route::get('helloworld',Onlyus\Helloworld@index);
创建view文件
创建src/views文件夹,复制resource/views/welcome.blade.php到packages/onlyus/helloworld/src/views/helloworld.blade.php在Service Provider注册view文件
public function boot() { $this->loadViewsFrom(__DIR__.'/views', 'helloworld'); }
修改controller中index函数
public function index($params = NULL) { return view('helloworld::helloworld', ['param'=> ($params?:'hello world')]); }
最终结果
代码
相关文章推荐
- 对一个简单的 JDBC 包装器的扩展及应用
- 一个简单的Dreamweaver 扩展源文件(mxi)
- Libgdx Developer's Guide(Libgdx开发者手册)-9(一个简单的游戏2--扩展示例游戏)
- css3简单几步画一个乾坤图
- [原创]css3简单几步画一个乾坤图
- 一个对于Array的简单扩展
- php 5.6版本中编写一个PHP扩展的简单示例
- 自己动手写一个简单的Windows shell扩展程序
- 自己动手写一个简单的Windows shell扩展程序
- 一个简单的创建圆角图像的UIImage扩展实现
- 最简单直接继承、扩展Object,或者克隆一个Object到能创建多个互不干扰实例的方法
- 一个简单的include扩展
- 编写一个简单的php扩展
- (Python编程)一个简单的C扩展模块
- 一个简单php扩展介绍与开发教程
- Apache模块开发/用C语言扩展apache(3:一个非常简单的apache module)
- 最简单直接继承、扩展Object,或者克隆一个Object到能创建多个互不干扰实例的方法
- 一个简单的tcl的dll扩展事例
- PHP扩展开发:一个简单的例子
- 大话JS面向对象之扩展篇 面向对象与面向过程之间的博弈论(OO Vs 过程)------(一个简单的实例引发的沉思)