为什么80%的码农都做不了架构师?>>>   

laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个laravel扩展包。

全新的laravel5.4环境安装

composer create-project laravel/laravel --prefer-dist .

创建文件夹及整理目录结构

  1. 在项目根目录下创建一个packages,所有的扩展文件都放在此目录下。
  2. 进入到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')]);
}

最终结果

代码

转载于:https://my.oschina.net/zho/blog/843212

简单几步写一个laravel扩展包相关推荐

  1. 下载量最高 100 个 Laravel 扩展包推荐

    本文经授权转自 PHPHub 社区,后续更新将以 PHPHub 帖子内容 和 GitHub 内容 为准. 说明 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的, ...

  2. 下载量最高的 100 个 Laravel 扩展包推荐

    Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态. 本文对 Packagist 上打了 Laravel 标签 的扩展包进行整理,截止到现在 2 ...

  3. 【转】下载量最高的 100 个 Laravel 扩展包推荐

    说明 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态. 本文对 Packagist 上打了 Laravel 标签 的扩展包进行整理,截止到现 ...

  4. 给 IConfiguration 写一个 GetAppSetting 扩展方法

    给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config ...

  5. appsetting mysql_给IConfiguration写一个GetAppSetting扩展方法(示例代码)

    给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config ...

  6. 如何开发、本地测试、发布 Laravel 扩展包?Class ‘Angkee\Admin\AdminServiceProvider‘ not found

    在按照文档实践当中遇到错误.我修正一下. Class 'Angkee\Admin\AdminServiceProvider' not found 应该是这样的 "Angkee\Admin\& ...

  7. 原来热加载如此简单,手动写一个 Java 热加载吧

    1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...

  8. laravel扩展包开发步骤总结

    1. 创建包 1 php artisan workbench vendor/package --resources 注:  vendor:开发商名   package:包名 2.修改下包里compos ...

  9. 跟我一起写一个chrome扩展程序

    在我没有看这本书之前,我都想象不到,原来chrome扩展程序可以这样写,真的非常有意思. 就是用最简单最基础的代码,然后就实现了一些非常有意思的玩意儿. 先看效果图 实际运用要和现实联系在一起,经历和 ...

最新文章

  1. 日期类对象与整数之间的加法运算
  2. php如何查询数据是否存在,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程...
  3. Java基础学习总结(15)——java读取properties文件总结
  4. Copy GAC DLL
  5. HTML中引入CSS的方法
  6. JavaScript性能优化:度量、监控与可视化1
  7. javascript 开发_25个新JavaScript开发人员的免费资源
  8. alsa 测试 linux_Electron 构建步骤 (Linux)
  9. 2月20日 梯度下降、三种方式、三种超参数学习率冲量衰减因子、应用举例
  10. HP ProLiant DL380 G6 服务器 - 清 BIOS 的方法
  11. 基于C语言的小游戏合集
  12. 2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)
  13. dnf强化卷代码_dnf强化卷叫什么名字?
  14. mysql ubb html_自动闭合HTML/ubb标签函数
  15. 只查看ett.txt文件(100行内,20-30行内容)
  16. 使用AMD CPU,打造自己的深度学习服务器
  17. 基于MATLAB的HSV颜色模型烟雾识别仿真
  18. win7下的cmd窗口可以全屏显示吗
  19. Android 应用apk打包原理
  20. 【每日随笔】毕业论文答辩 ① ( 答辩流程梳理 | 答辩的一些注意点 )

热门文章

  1. 大型网站采用什么系统架构保证性能稳定性
  2. 标定(二)----------双目相机与IMU联合标定(工具箱使用方法——Kalibr)
  3. PHP哈希表碰撞攻击原理
  4. 淘宝李晓拴:淘宝网PHP电子商务应用
  5. HTTP Response中的Chunked编码
  6. 【Git】git clone时下载速度太慢的解决方法(亲测有效)
  7. python高级数据结构_Python高级数据结构(二)
  8. (mfc)将字符串中的字符逐个按行输出_C语言中字符串输入输出
  9. 数据验证html,JavaScript 表单数据验证
  10. linux笔记本没有insert,无法在Linux中将UTF8插入数据库MySQL(Can not insert UTF8 to Database MySQL in Linux)...