时间紧迫先简单说明下
服务提供者: 是绑定服务到容器的工具.
容器: 是laravel装载服务提供者提供的服务实例的集合或对象
门面: 使用这些服务的快捷方式.也就是静态方法.
注意: 如果一个类没有基于任何接口那么就没有必要将其绑定到容器。容器并不需要被告知如何构建对象,因为它会使用 PHP 的反射服务自动解析出具体的对象。(?后面这个明白意思,但不知道怎么做)
使用dingo返回数据,一开始有点懵,现在开始有点明晰了.
方法一
用Dingo的Transformer. 其实这两种写法都可以 用Transformer()更简洁和灵活一些.
因为Transformer()不仅可以利用 return $ECUser->attributesToArray();
将属性转换成数组
还可以添加和转换数据库中没有的字段,还可以用 include
做类似关联表的作用,具体看这里: Dingo Transformers 的使用(Fractal)
所以这个很灵活,可以在这个类里添加更多的操作,当然只是返回array的话,还是稍显麻烦因为还得建立个文件.
补充:
Dingo返回数据几种形式:
Responding With An Array 响应一个数组return $this->response->array($user->toArray());
Responding With A Single Item 响应一个元素return $this->response->item($user, new UserTransformer);
Responding With A Collection Of Items 响应一个元素集合return $this->response->collection($users, new UserTransformer);
Responding With Paginated Items 分页响应return $this->response->paginator($users, new UserTransformer);
Route::auth(); 5.2新加的用于生成auth路由
Auth::guard($guard) 试图从本地缓存中获取保护 官方直译是这么写的 但还是不明白啥意思 而且这也是5.2新加的
有点懂这个guard了 主要用这个机制应对同一应用不同登录验证 比如前台用户登录和后台管理员登录 就可以放在两个表里然后配置不同的guard
5.2和5.1的Auth部分变化很大,两个config/auth.php配置就有很大区别
5.2把单独Auth/Guard 类 拆成了三个,SessionGuard和TokenGuard,GuardHelpers.
GuardHelpers主要是共有方法,另外两个是根据不同驱动,也就是登录信息保存方法.
同时也就是根据pc和移动的登录验证分成了两个类.
laravel是区分大小写的,即使在windows下如果url路径写错(大小写不一致),也会造成找不到页面错误
TaskRepository 分担查询数据库内容的工作 其实放到model也可以 不过这样解耦 以后方便改吧
1 | RouteServiceProvider --> $router->model('task','App\Task'); #路由绑定模型 还得需要前边 路由的配合 |
关联策略的 策略是用于检查是否有权限进行这个操作
1 | public function destroy(User $user, Task $task) |
1 | $this->authorize('destroy',$task); |
调用策略验证 同名功能 其实可以不用第一个参数
默认策略必须在AuthServiceProvider这个支持者里进行设定才能应用
1 | <?php |
真是被这个搞的头都大了.绕来绕去的,到现在AUTH和GUARD倒地是如何分工的,还是不太明白.算了先说怎么弄的吧.
现在用的就是这个方法,也是很多无奈.因为用的JWT插件,一改的话得改很多,而且怎么都得动源代码,不是laravel就是JWT的 所以索性就最简单粗暴吧
Illuminate\Auth\EloquentUserProvider
1 | // 114行左右 |
在使用的时候,对一个中间件找不到位置.头疼不已,经过一顿寻找终于搞明白了,这里记录下,因为虽然注释了,不过几天后又蒙圈了.前后台一起搞真是玩自己啊.
1 | //routes |
模型类一些私有属性
1 | //指定表名 |
###用composer建立项目
莫名其妙的5.1.11的库文件少了 vendor
这个目录所以拿composer无法创建了 只好创建5.2 或者下载一键安装包
1 | composer create-project laravel/laravel myapp --prefer-dist |
###配置项目环境
接口一直让我很晕,下面这篇文章有了很好的说明.
现代 PHP 新特性系列(二) —— 善用接口
这里我就再简单化下,以便我能快速记忆.
API说
说他像API,是因为他提出来所有功能.你知道接口有什么,你就知道你能做什么了
模具说
说他像模具,是因为接口的功能是统一的,一致的.但是实现的方法可以不同.就像你做一个花瓶的模具,但是根据填充的材料不同,可以做出不同的花瓶.什么玻璃的,陶瓷的,珐琅的.虽然他们长的都一个样.
所以接口的作用,就是解耦.
比如一个DB类流程:
###参考 artisan make:model 而写的 make:view 新建blade模版
MakeView.php
1 |
|
这里面 registerContact() 其实是没用的 应该是调用其他服务功能时才有用.
但是这个简单功能完全可通过router和controller完全能实现所以 感觉不需要写个什么服务了.
暂时这么理解吧
1 | namespace Jai\Contact; |
第一步开通测试
在我的产品中 点击为测试 然后添加要测试的项目 要不然会提示无权限 这里选择网关支付
下载测试证书
测试证书要从 个人中心 测试参数哪里下载 https://open.unionpay.com/ajweb/account/testPara
商户私钥证书 必须安装一下 要不会会出错
编写代码
1 |
|
下载 VirtualBox 并安装 这个不用说一顿下一步就好了 下载地址
下载安装 Vagrant 这个也是跟上面一样 下载地址 哦 记得重启电脑要不命令不好使的
下载 Homestead Vagrant Box 这里你可以使用命令 vagrant box add laravel/homestead
慢慢等 大概20分钟左右吧 (使用命令时会让你选择 记得要选择 virtualbox 如果你装的VM那就选另一个就好了)
也可以看到下载地址自己下 就是在输入命令后 开始下载时 果断 Ctrl+C
通过地址我发现 直接去浏览版本 然后进入版本后在后面 接上这个 providers/virtualbox.box
就可以下载了
我试了下下载速度其实快不了多少 但是有个好处可以断点续传 而使用命令是不可以的 如果失败了 是比较麻烦的
https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.4.2/providers/virtualbox.box
失败了… 唉下载那种方式我失败了 总说文件无法打开 也不知道为啥 但是别人都成功了 算了不管了 以后再说吧 还是直接用命令下 反正时间也没差多少