laravel
入门
安装
服务器要求
php >=7.13
oprn ssl
pho php
mbstring php
tokennizer
xml
crype
json
bcmathc
安装
composer globale require laravel/laravel
laravel new blog
php artisan serve
配置
公共路径
配置文件
在config下
目录权限
stoage bootsrap/cache 要有权限
秘钥
其他
缓存
数据库
会话
优雅链接
ngnix
locsltion /{
type_file $url ¥url/index.php
}
配置
介绍
配置都在cofig下
环境配置
环境变量类型
使用dotenv实现配置功能
.env .emv.example
格式 app_name="我的app"
检索环境配置
1. $_env 可以获取
env('a[pp_debug',false) 也可以后去
确定当前环境
使用 App:eveiment()获取当前的环境
判断是否在某个环境下
$isyes=App:evierment("local")
$isyes=App:evierment(["local",'dev'])
在调试界面隐藏缓存变量
config/app.php的debug_blacklist 可以控制不显示错误信息
debug_baclklist=>[
'_env'=>[
'app_key'
,'db_password']
]
这些都不会传给前端
访问配置项
使用config('app.name' ) 获取配置
set config(['app.name'=>'刘某国泰'])
配置缓存
原因 使用 config.cache 直接把多个env的内容缓存到一个文件里面
生产环境可以 ,但是开发环境不建议
维护模式
文件夹目录结构
app
broadcasting
console
event
excepton
http
listeners
mail
policies
providers
rules
bootstrap
app.php文件 启动引导文件
cache 缓存目录
databse
public
resources
router
storage
tests
vendor
部署
核心框架
请求周期
生命周期
public/index.php
1 index加载composer生产的自动加载设置
2 再去 boostrap/app.php中检索laraveld的实例
3 根据把请求发送到http内核或者控制台内核
app/http/kernel.php
kernel j继承了 fuundation/http/kernal类 定义了
bbootstrapper 数组
1bbootstrapper 有内容
错误处理 日志 检查环境 请求被处理前需要执行的任务
2 还有中间件
启动你的 服务提供者
服务提供者清单 在 config/app.php 的providers中
1 先調用一遍 服务提供者的register方法
之后调用他们的boot方法
服务提供者可以提供 数据库 队列 路由组件 验证器等功能
最后把请求分配给 控制器(+ 中间件)
聚焦服务提供者
1 你的服务提供者放在app/providers下
服务容器
简介
通过类的构造器 把类需要的属性设置景进去
demo
class usercontroller{
userservice
__constructoer(Userservice userserice){
$this->userserice=userservice;
}
}
你需要知道是 我现在需要userserice
那么 框架就给我这个userservice
绑定
什么时候 把服务者 注册到容器中呢? 如何注册呢??
基本绑定
$this->app->bind("A\B",function($app){
return new A\B()
})
单例
this->app->sigleton("Classname",funcion($app){
return new Classname()
})
你已经拿到了一个实例了 直接绑定到app中
tgis-。app->instacen("classname",class的instance)
绑定一个基本的value
this->app->when(classname)
->needs("$variableName")
->give("123")
绑定接口到实现
1 我们知道接口是还没有实现的
2 直接给这个接口绑定一个实现
上下文绑定
你有2个类 实现了相同的接口 但是要注入不一样的实现
使用条件判断 when
this->app->when(classname1)
->needs(interface1)
->give(fnction(){
return value1
})
this->app->when(classname2)
->needs(interface1)
->give(fnction(){
return value2
})
标记
扩展绑定
解析
make方法 容器中得打这个实例
app->make()
resolve()
主动注入
在你的类的构造函数的参数写你需要的类
就会被自动注入
容器事件
psr-11
服务提供者
简介
服务提供者我的理解就是services 那么接下来 你需要学会的是 编写你的类 如何注册到容器里面去
如何使用
并不是一次性容器一次性全部加载,有点需要lazy延迟到使用的时候才加载
编写服务提供者
编写自己的服务提供者
1 继承 sercieprovider类
2 实现 register方法 和 boot方法
register只是把你的方法绑定到 容器中
注册方法
demo
register(){
this->app->signer('classname',function(app){
return new Classname()
})
}
binds singletons
引导方法
boot会在所有的提供者被注册之后 在调用
boot的参数可以依赖注入
注册服务提供者
最后把你写好的提供者 到config/app.php中注册
延迟提供者
门面
简介
静态接口
直接就可以使用容器的提供者
emo
use facedels/Route
Route::get('/get',function)(request){
})
合适使用facades
vs 依赖注入
vs 辅助方法
facades的工作原理
1 都得基础facades类
2 所有的类 都必须从写 static getFacadAccosoer方法 返回当前容器中这个类的key
3 这个类实现了__callStataic的方法
这个方法会在你使用不存在的静态方法的时候 被触发
那么 根据2这个步骤我就能拿到在容器中真的那个对象,之后调用他的方法 返回
实时facades
facade的参考类
契约
基本功能
路由
中间件
控制器
请求
响应
视图
url
验证
错误
日志
安全
用户认证
api认证
用户授权
email认证
加密解密
hash
reset password
升级
命令行
广播系统
缓存
集合
事件
文件存储
辅助函数
子主题 1
邮件发送
消息通知
子主题 1
扩展包开发
队列
任务调度
数据库
快速入门
查询构造器
分页
数据库迁移
数据填充
redis
eloquent orm
快速入门
模型关联
集合
修改器
api资源
序列化