laravel

115 阅读4分钟
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资源
		序列化