PHP 生态体系
2018-11-07 09:38:14 54 举报
AI智能生成
PHP, PHP生态体系知识..
作者其他创作
大纲/内容
<b>社区网站</b>
http://laravel-china.github.io/php-the-right-way/ 【PHP之道】<br>
<b>学习资料</b>
https://psr.phphub.org/ 【PSR规范】
https://www.kancloud.cn/manual/thinkphp5_1 【TP5文档】
工具文档
文档规范
<b>PSR 规范</b>
<b>简介</b>
PHP Standard Recommendations PHP FIG组织
https://psr.phphub.org/
<b>详细内容</b>
<b>PSR-1</b>
<b>基本代码规范</b>
文件必须以 <?php 或 <? 开头
不带BOM的UTF-8编码
命名空间以及类必须符合 PSR-4 自动加载规范
类命名遵循首字母大写驼峰命名
常量必须大写,单词间下划线隔开
方法名、变量名遵循首字母小写驼峰命名
关键词
“必须”(MUST)、“一定不可、一定不能”(MUST NOT)、“需要”(REQUIRED)、“将会”(SHALL)、“不会”(SHALL NOT)、“应该”(SHOULD)、“不该”(SHOULD NOT)、“推荐”(RECOMMENDED)、“可以”(MAY)和“可选”(OPTIONAL)<br>
<b>PSR-2</b>
<b>代码风格规范</b>
基于PSR-1
缩进必须是四个空格而不是Tab键
每行字符数软性保持在80个内, 理论上不多于120个
每个namespace声明语句和use声明语句后面必须带一个空白行
类的开始花名号 { 必须在函数声明后自成一行,结束花名号 } 也必须在函数主体后自成一行
abstract 和 final 必须在(public、private、protected)之前, static则必须在之后
控制结构
控制结构的关键字后必须要有一个空格符
控制结构的开始花括号 { 必须写在声明的同一行,而结束花括号 } 必须写在主体后自成一行
控制结构的开始左括号后和结束右括号前,都一定不能有空格符
<b>PSR-3</b>
<b>日志接口规范</b>
通过接收一个Psr\Log\LoggerInterface对象,来记录日志信息
日志等级
debug、 info、 notice、 warning、 error、 critical、 alert 以及 emergency
通用入口方法 log
log($level, $message, array $context = array())
第一个参数为记录的等级, 根据等级调用对应的方法
如果传入的等级常量参数没有预先定义,则必须抛出Psr\Log\InvalidArgumentException类型的异常
日志信息 message
日志信息需要为字符串类型 或者 有__toString() 方法的对象
日志信息 占位符
占位符必须与上下文数组的键名保持一致
占位符名字必须使用一对花括号来作为分隔符。在占位符和分隔符之间一定不能有任何空格。
占位符的名称应该只由A-Z、a-z,0-9、下划线_、以及英文的句号.组成
<b>PSR-4</b>
<b>自动加载规范</b>
完整的类名中任意一部分中的下滑线都是没有特殊含义的
所有类名都 必须 是大小写敏感的
类名前面连续的一个或多个命名空间必须至少有一个与文件目录相对应
末尾的类名 必须 与对应的以 .php 为后缀的文件同名
自动加载器(autoloader)的实现 一定不可 抛出异常、一定不可 触发任一级别的错误信息以及 不应该 有返回值
<b>PSR-6</b>
<b>缓存接口规范</b>
<b>PSR-7</b>
<b>HTTP 消息接口规范</b>
工具库
<b>Composer</b>
<b>简介</b>
PHP5.3+ 依赖管理工具
<b>常用函数</b>
preg_replace($patterns, $replaces, $strings) 正则替换
常用特性
生成器
php5.5+ 关键字 yield
用于循环大数据数组 或 大文件
常见应用场景
防御XSS攻击
https://segmentfault.com/q/1010000004067521
HTMLPurifier.auto.php插件<br>RemoveXss函数(百度可以查到)
<b>常用框架</b>
<b>TP5+</b>
<b>简介</b>
2006 国内 轻量级
https://www.kancloud.cn/manual/thinkphp5_1
<b>编码规范</b>
PRS-2 + PRS-4
目录使用小写 + 下划线
函数的命名使用小写字母和下划线
以双下划线“__”打头的函数或方法作为魔术方法
常量以大写字母和下划线命名
配置参数以小写字母和下划线命名
<b>目录结构</b>
完整目录结构
application 应用目录(可设置)
extend 扩展类库目录(可定义)
public WEB 部署目录(对外访问目录)
runtime 应用的运行时目录(可写,可设置)
vendor 第三方类库目录(Composer)
thinkphp 框架系统目录
<b>配置相关</b>
<b>路由相关</b>
数据库相关
DB 操作
查询
添加
更新
删除
缓存机制
操作事件
其他
模型操作
配置
查询
添加
更新
删除
软删除
模型关联
其他功能
数据类型
默认值
获取器
修改器
搜索器
验证器
事件
数据集格式化
<b>模板引擎</b>
普通调用
布局、继承
文件引用
标签库
使用方法
流程控制
循环
条件判断
定义变量
原生PHP
标签拓展
其他功能
内容替换
<b>其他特性</b>
<b>命令行模式</b>
通过命令行执行一些URL访问不方面或安全性较高的操作
根目录下执行 php think
自定义命令行 application/command.php
<b>行为监听</b>
类似AOP编程思想
<b>// 在app_init位置侦听行为</b><br>\think\Hook::listen('app_init');
<b>// 绑定行为到app_init位置</b><br>\think\Hook::add('app_init','\app\index\behavior\Test');
<b>组件驱动</b>
0 条评论
下一页