1. 创建包
 php artisan workbench vendor/package --resources
    注:  vendor:开发商名   package:包名
 
2.修改下包里composer.json中的authors
 
"authors": [
{
"name": "cicl",
"email": "test@126.com"
}
]
3. 为创建的包注册ServiceProvider
在项目根目录执行 php artisan dump-autoload
在app/config/app.php文件里的provides数组中添加该包,将Vendor\Package\PackageServiceProvider添加到providers数组.
为了方便我们的使用,我们在app/config/app.php的aliases中增加一个别名: 'Package' => 'Vendor\Package\Facades\Notification',
启动开发服务器: php artisan serve ,如果成功启动,如显示:Laravel development server started on http://localhost:8000,则扩展包的基础搭建就成功了。
       基本的扩展包结构:
        /src
/Vendor
/Package
PackageServiceProvider.php
/config
/lang
/migrations
/views
/tests
/public

4、为本包添加独立路由文件,只需在PackageServiceProvider中的boot函数中添加如下代码,并在包的根目录创建routes.php文件

public function boot(){
$this->package('vendor/package');
include __DIR__.'/../../routes.php';
}

路由文件如下所示:

Route::get('test',  function(){    return "this is test";});

现在,在浏览器里输入地址如:http://localhost:8000/test,就会输出“this is test”。

 
5.接下来尝试使用Controller
    新建路由如下:

Route::get('testtwo',array('as' => 'testtwo','uses' => 'Vendor\Package\Controllers\PackageController@getTest'));
6、在controllers 中新建RegistrationController.php文件,代码如下:
<?php
namespace Ccl\Lenon\Controllers;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\View; Class LenonController extends Controller {
public function getTest() {
return "控制器测试";
}
}
 
尝试打开页面,提示找不到控制器,Laravel默认是不自动查找任何目录的,需要开发者自己指定文件的存放目录,不过它也给出了建议路径,比如在使用artisan workbench的时候是不是生成了src/controllers目录呢,Ok,我们添加自动加载路径即可。
7、在包的根目录的composer.json的autoload下classmap字段增加"src/controllers",如:
 "classmap": [
"src/migrations",
"src/controllers"
],
并在项目根目录运行 php artisan dump-autoload,刷新页面就好了。

8、接下来我们要使用views文件!按照我们理解我们只需要修改controller中代码,如下:

public function getRegister()
{
return View::make('test');
}

在包src/views/ 下创建 test.blade.php文件,并在文件中写入相关页面代码,例: <h1>这是测试视图的文件</h1>

刷新页面,发现并没有成功,在Laravel中,是不会自动索引包中的视图文件的,所以我们还需要做一点点工作!

9、在载入视图的时候指定他去包中寻找视图文件即可,修改controller中代码如下:

public function getRegister()
{
return View::make('package::test');
}

再次刷新页面,我们期待的页面出现了,

 
public迁移     
php artisan asset:publish --bench="vendor/package"
 
创建数据库迁移
php artisan migrate:make create_users_table --bench="vendor/package"

执行数据库迁移

php artisan migrate --bench="vendor/package"

laravel扩展包开发步骤总结的更多相关文章

  1. 基于Composer的Laravel扩展包开发工作流 ,实现laravle项目的文件管理(记录成长)

    PHP Composer包开发 基于Composer的Laravel扩展包开发工作流 实现laravle项目的文件管理,添加文件/文件夹,删除文件,查看代码/文件(代码支持缩进,支持语法高亮) com ...

  2. 基于Composer的Laravel扩展包开发工作流

    使用场景 在引用第三方包的时候,对第三方包有改动需求,需要将代码放在自己的仓库:并且自己的其他项目也有需求引用自定义的第三方包:甚至自己会发布修改后的第三方包: 读完本文你讲获得: Git Submo ...

  3. laravel composer 扩展包开发(超详细)

    laravel composer 扩展包开发(超详细) 置顶 2018年02月05日 11:09:16 Simael__Aex 阅读数:10396    版权声明:转载请注明出处:http://blo ...

  4. 如何开发 Laravel 扩展包并发布到 Composer

    如何开发 Laravel 扩展包并发布到 Composer  发布于 2019-01-22 cxp1539  1074 Vie   开发扩展包 我们来做一个根据第一个字符或者汉字生成头像的larave ...

  5. 如何开发、本地测试、发布 Laravel 扩展包?

    如何开发.本地测试.发布 Laravel 扩展包?  Laravel/ 1年前/  4022 /  11   现在已经有了很多,关于如何开发 Laravel 扩展包的文章.但是大多文章写的太过片面,不 ...

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

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

  7. 使用 Composer 安装Laravel扩展包的几种方法

    使用 Composer 安装Laravel扩展包的几种方法 以下的三种方法都是需要你在项目的根目录运行 第一种:composer install 如有 composer.lock 文件,直接安装,否则 ...

  8. laravel框架应用和composer扩展包开发

    laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,发展势头迅猛,应用非常广泛,有丰富的扩展包可以应付你能想到的各种应用场景,laravel框架思想前卫,跟随时代潮 ...

  9. 如何正确使用 Composer 安装 Laravel 扩展包

    我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 composer ...

随机推荐

  1. php对象与数组互转

    //对象转数组 function objectToArray($obj){ $arr = is_object($obj) ? get_object_vars($obj) : $obj; if(is_a ...

  2. Nodejs异步

    http://cnodejs.org/topic/4f16442ccae1f4aa2700113b http://cnodejs.org/topic/4f16442ccae1f4aa27001123 ...

  3. Shoot the Bullet

    zoj3229:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3442 题意:一个摄影师,在n天内给m个女神拍照.每个女神至少要 ...

  4. iOS-NSString-Base64String-Base64原理

    之前看到好多人找Str2Base64Str,还有好多自己写了方法的,仔细研究了下base64的编码原理(这个我写在下面),发现官方的API已经可以完成这项功能,这里贴出来供大家参考. 一言不合就上代码 ...

  5. SCP和SFTP(都使用SSH。但SCP上传不能中断,而SFTP可以续传,这是最大区别)

    不管SCP还是SFTP,都是SSH的功能之一.都是使用SSH协议来传输文件的. 不用说文件内容,就是登录时的用户信息都是经过SSH加密后才传输的,所以说SCP和SFTP实现了安全的文件传输. SCP和 ...

  6. 如何快速使用ECharts绘制可视化图表

    1.在ECharts官网,下载ECharts的源码和示例文件. 2.解压缩下载下来的Echars压缩包,找到doc\example\www\echartsjs目录,将里面的js文件全部取出来,放到项目 ...

  7. android gradle 多渠道打包

    buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:grad ...

  8. 去掉eclipse js 错误提示

    1.去掉项目目录底下的.project文件中的以下部分:<buildCommand>      <name>org.eclipse.wst.jsdt.core.javascri ...

  9. 可恶的0x1A

    很少用fread读文件,今天用fread读一个文件死活缺一点,折腾半天才发现原来遇到0x1a. 0x1a 是 Ctrl+Z ,是模拟文件结束的符号,就是文件遇到0x1a后,认为文件已经结束. 哎!记下

  10. Linux学习笔记11——文件I/O之二

    一.文件共享 内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响. 1.每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述表 2.内 ...