为什么80%的码农都做不了架构师?>>>
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.php
namespace 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')]);
}
最终结果
代码