目录结构
F:.
│ Power.php
│ Superman.php
│
└─IoC
Power.php
Superman.php
1 |
|
时间紧迫先简单说明下
服务提供者: 是绑定服务到容器的工具.
容器: 是laravel装载服务提供者提供的服务实例的集合或对象
门面: 使用这些服务的快捷方式.也就是静态方法.
注意: 如果一个类没有基于任何接口那么就没有必要将其绑定到容器。容器并不需要被告知如何构建对象,因为它会使用 PHP 的反射服务自动解析出具体的对象。(?后面这个明白意思,但不知道怎么做)
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 |
抽象类(abstract),一般用于基类,所有的公共方法都可以放在里面,抽象类是不能被实例化的,只能被继承.而且抽象方法是必须被重写的,其他可以根据需要选择.这样你可以简单只写一个抽象方法,其他方法大家都有了,省着写了.
以下是官方说法
PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
模型类一些私有属性
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; |
Alt+Shift+X
命令行工具 (这个和Terminal有区别这个是laravel自带一些命令 这个好像的装laravel插件才可以用)
Ctrl+F12
呼叫出方法列表
Ctrl+Alt+S
呼出配置
Ctrl+P
快速打开文件
Ctrl+Shift+A
搜索所有配置选项
Ctrl+Shift+Z
撤销刚才的撤销也就是windows上的 Ctrl+Y
Ctrl+Q
显示代码注释
Ctrl+E
最近打开文件
说明一下为什么写这个.因为docker的link时需要取得环境变量里面的mysql容器的IP地址,所以想用php取得容器的环境变量.原本想用
$_ENV[]
发现没有内容 原来需要修改 php.ini 里面variables_order = "EGPCS"
上述配置表示PHP 接受的外部变量来源及顺序,EGPCS 是Environment、Get、Post、Cookies 和Server 的缩写。如果variables_order 的配置中缺少E ,则PHP 无法接受环境变量,那么$_ENV
也就为空了。 后来想到用 php 执行 shell 命令 使用exec , system , shell_exec 但还是获取不到 好赖用 system(env) 才发现原来是我登录的用户为 www-data 所以根本获取不到额外的环境变量 所以这个想法只能作罢, 至于下面 是顺手总结的 一些全局变量的用法