Laravel5.8 - 001.组件介入框架

github

https://github.com/masterzcw/laravel58

微信授权登录

安装laravel-wechat

https://github.com/overtrue/laravel-wechat

$ composer require "overtrue/laravel-wechat:~5.0"

** 在 app/Http/Kernel.php 中添加路由中间件:

protected $routeMiddleware = [
    // ...
    'wechat.oauth' => \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate::class,
];

在路由(/routes/web.php)中添加中间件:

Route::group(['middleware' => ['web', 'wechat.oauth']], function () {
    Route::get('/user', function () {
        $user = session('wechat.oauth_user.default'); // 拿到授权用户资料
        dd($user);
    });
});

配置文件

$ php artisan vendor:publish --provider=“Overtrue\LaravelWeChat\ServiceProvider”
在配置文件(/.env)中增加

# wechat
WECHAT_OFFICIAL_ACCOUNT_APPID=wx229a24acb26e4a32
WECHAT_OFFICIAL_ACCOUNT_SECRET=bffddeb2917ffe7a5d86e0de9c722f7e
WECHAT_OFFICIAL_ACCOUNT_TOKEN=masterzcw

此时可以测试路由

Route::group(['middleware' => ['web', 'wechat.oauth']], function () {
    Route::get('/user', function () {
        $user = session('wechat.oauth_user.default'); // 拿到授权用户资料
        dd($user);
    });
});

组件与框架的融合 & 良好的迁移性

注册服务到组件(/laravel-shop/composer.json)

    "extra": {
        "laravel": {
            "providers": [
                "Masterzcw\\LaravelShop\\Wap\\Member\\Providers\\MemberServiceProvider"
            ]
        }
    }

创建用户授权控制器

/laravel-shop/src/Wap/Member/Http/Controller/AuthorizationsController.php

创建用户的服务提供者

/laravel-shop/src/Wap/Member/Providers/MemberServiceProvider.php

创建组件的user模型

/laravel-shop/src/Wap/Member/Models/User.php

创建中间件, 用来取代微信用户授权的中间件

/laravel-shop/src/Wap/Member/Http/Middleware/ReplaceWXAuth.php

组件的迁移性优化

** 首先要添加组件的依赖
/vendor/masterzcw/laravel-shop/src/Wap/Member/composer.json

    "require": {
        "overtrue/laravel-wechat": "~5.0"
    },

注册依赖的中间件

在组件中注册依赖的中间件, 就不必在组件安装后在框架中另外的注册这些中间件

/vendor/masterzcw/laravel-shop/src/Wap/Member/Providers/MemberServiceProvider.php
$this->registerRouteMiddleware();
其中/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
是$this->app的类

把组件的配置文件加载到框架的配置中

组件的服务提供者中(/vendor/masterzcw/laravel-shop/src/Wap/Member/Providers/MemberServiceProvider.php)
$this->mergeConfigFrom(配置文件路径, 别名);

public function register(){
    $this->mergeConfigFrom(__DIR__.'/../Config/Member.php', "wap.member");
}

之后控制器中可以测试

config('wap.member')

用组件的配置文件的内容替换框架配置的原有内容

用组件的配置信息替换框架的配置信息, 例如替换了auth的类

use Illuminate\Support\Arr;
class MemberServiceProvider extends ServiceProvider
{
    ...
    public function boot()
    {
        // 怎么根据配置文件去加载auth信息
        $this->loadMemberAuthConfig();
    }
    private function loadMemberAuthConfig(){
        $_config = config('wap.member.auth', []);
        config(Arr::dot($_config, 'auth.'));
    }
    ...
}

命令行发布配置文件

$ php artisan vendor:publish --provider=“Masterzcw\LaravelShop\Wap\Member\Providers\MemberServiceProvider”

服务提供者中(/laravel-shop/src/Wap/Member/Providers/MemberServiceProvider.php)

private function registerPublishing(){
    // 判断是否在命令行运行
    if($this->app->runningInConsole()){
        // $this->publishes([当前组件的配置文件路径 => config_path(复制到哪个目录)], '标识');
        $this->publishes([__DIR__.'/../Config' => config_path()], 'wap.member');
    }
}

组件的数据迁移

生成迁移

使用 Artisan 命令 make:migration 来创建迁移。
php artisan make:migration 文件名后缀(转大驼峰作为类名) --create=表名称
php artisan make:migration create_sys_user_table --create=sys_user

执行迁移文件

php artisan migrate

注意migrations表中的数据与各个表是一一对应的, 要保持一致

组件的数据迁移

服务提供者(/laravel-shop/src/Wap/Member/Providers/MemberServiceProvider.php)

    protected function loadMigrations(){
        // 判断是否在命令行运行
        if($this->app->runningInConsole()){
            $this->loadMigrationsFrom(__DIR__."/../Database/migrations");
        }
    }

创建laravel组件命令行

自定义命令

$ php artisan make:command InstallConmmand

组件中创建命令

(/laravel-shop/src/Wap/Member/Console/Commands/InstallConmmand.php)

服务提供者中

(/laravel-shop/src/Wap/Member/Providers/MemberServiceProvider.php)

public function boot()
{
	....
    $this->commands([
    	\Masterzcw\LaravelShop\Wap\Member\Console\Commands\InstallConmmand::class,
	]);
}

命令行测试

$ php artisan wap-member:install argument1

希望通过命令行执行安装

/laravel-shop/src/Wap/Member/Console/Commands/InstallConmmand.php

    public function handle()
    {
    	//数据迁移
        $this->call("migrate");
        $this->call("seed:db");

        // config发布文件发布
        $this->call("vendor:publish", [
            "--provider" => "Masterzcw\LaravelShop\Wap\Member\Providers\MemberServiceProvider",
        ]);
    }

命令行测试
$ php artisan wap-member:install

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程目录: 章节1:课前准备 课时1Laravel版本的选择05:46 课时2本地开发环境的搭建07:50 课时3本地域名解析08:40 课时4git的简单介绍08:53 课时5composer的安装和使用11:12 课时6课程源码同步08:14 课时7PHPStorm插件的安装05:44 课时8项目开发流程介绍03:19 章节2aravel基础入门 课时9Laravel的安装以及安装过程中常见问题24:40 课时10Laravel入门介绍08:46 课时11Laravel基本路由27:51 课时12Laravel路由参数32:25 课时13Laravel中间件22:43 章节3:项目模块设计和模板的引入 课时14模板的分离与blade布局模板03:12 课时15功能模块设计03:59 课时16后台控制器的创建与访问20:05 课时17后台模板的引入26:27 课时18前后台模板的获取34:33 章节4:后台-系统配置模板的开发 课时19创建站点配置页面23:57 课时20数据库连接和数据表的创建24:05 课时21网站配置信息写入数据表37:24 课时22完善网站配置(新手常见问题处理)18:59 课时23数据验证与数据闪存27:58 课时24完善系统配置功能27:59 课时25使用pjax提升后用户操作体验17:25 章节5:后台-新闻模块开发 课时26数据迁移与数据填充31:27 课时27新闻列表显示与新增36:33 课时28Laravel中的文件上传23:23 课时29富文本编辑器Neditor的使用28:56 课时30pjax下编辑器的异常处理10:07 课时31Laravel表单请求验证17:35 课时32新闻的编辑与删除34:48 课时33旧图片的处理和自定义公共函数16:10 章节6:无限级分类 课时34无限级分类原理33:06 课时35无限级分类的添加33:03 课时36无限级分类的删除与编辑20:21 课时37静态方法的正确使用07:56 课时38Laravel内置验证规则和自定义验证规则28:58 课时39提示信息的本地化11:34 章节7:后台-产品管理模块开发 课时40产品管理(1)27:23 课时41产品管理(2)-自定义验证规则25:42 课时42产品添加扩展内容14:41 课时43Laravel关联模型的使用21:33 课时44产品的编辑19:39 课时45产品编辑的完善07:13 课时46产品的批量删除与单条删除35:50 课时47使用Laravel模型事件完善产品删除功能18:37 章节8:后台-案例模块的开发 课时48数据表的创建和列表显示21:00 课时49案例的添加16:16 课时50案例的编辑与删除23:50 章节9:后台-单页模块开发 课时51单页模块(1)公司简介的处理32:11 课时52单页模块(2)招贤纳士功能实现35:00 课时53单页模块(3)发展历程的实现29:57 章节10:后台-轮播图模块开发 课时54轮播图模块表的设计与数据迁移09:19 课时55轮播图管理功能(1)20:59 课时56轮播图管理功能(2)32:43 课时57轮播图管理功能(3)自定义验证规则14:06 课时58问题处理21:57 课时59ajax实现异步排序19:42 课时60Laravel中访问器的使用11:42 课时61关于删除功能的扩展27:26 章节11:后台-友情连接模块开发 课时62友情连接模块开发28:07 章节12:后台权限认证 课时63管理员表的设计与创建15:46 课时64管理员登录验证的实现(1)25:11 课时65管理员登录验证的实现(2)23:59 章节13:前台 课时66前台首页的引入与布局模板21:01 课时67前台首页的数据调用(1)29:36 课时68前台首页的数据调用(2)16:51 课时69前台产品展示(1)23:35 课时70前台产品展示(2)15:31 课时71前台新闻数据调用17:50 课时72 Laravel自定义分页样式28:44 课时73前台新闻详情页04:33 课时74 前台案例展示11:37 课时75关于我们数据展示23:45 章节14:SEO优化入门 课时76常用的搜索引擎指令16:40 课时77SEO优化-标签优化11:46 课时78SEO优化-关键词优化08:14 课时79SEO优化-URL-robots优化07:43 课时80nofollow优化和图片优化16:43 课时81网站地图09:01 课时82链接优化与内容优化09:12 课时83百度推送(1)14:26 课时84百度推送(2)自定义类库(单例模式)27:28 课时85百度推送(3)21:13 课时86Laravel中Session的用法(百度推送优

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值