PHP开发各种规范,面试秘籍!
基本约定
源文件
代码使用<?php开头,忽略闭合标签?>
文件格式必须是无BOM UTF-8格式
一个文件只声明一种类型,如class和interface不能混写在一个源文件中
缩进
使用4个空格来缩进,IDE可以设置
行长度
每行120个字符
关键字
所有关键字均为小写,如true、false
命名
类名为大驼峰法,如UserModel
类方法名为小驼峰法,如getUserId()
函数使用小写字母加_组合,如get_cookie()
变量名使用小驼峰法,如$userId
常量定义为大写字母加_组合,如IS_DEBUG
代码注释标签
类文件中对类、方法、属性进行注释,使用@param @return @throwns
@param注释写出详解,如@param string $username 用户名
业务模块
路由为小写字母加_组成,如/api/get_user_info
View层负责数据展示
Controller层负责输入参数校验,最外层捕捉异常,调用Logic和View视图层
Logic层负责具体业务逻辑,调用Model层,返回处理数据
Model层负责数据表查询和关联关系
异常类需分清功能,如ParamException表示参数错误,UserException表示自定义异常
异常需分类定义code,使用PHP类常量代替,如
<?php
namespace app\exceptions\codes; class UserExceptionCode extends BaseExceptionCode {
const NO_AUTH = ;
const NO_AUTH_MSG = '不具有权限';
const STATUS_EXCEPTION = ;
const STATUS_EXCEPTION_MSG = '状态异常';
}
数据表文件如有Enum类型,使用PHP类常量代替,如
<?php
<?php
namespace app\enums; class UserEnum extends BaseEnum {
const STATUS_DELETED = -;// 已删除
const STATUS_DISABLE = ;// 禁用
const STATUS_ENABLE = ;// 正常 const AUTH_GUEST = ;// 匿名用户
const AUTH_GENERAL_ADMIN = ;// 普通管理员
const AUTH_SUPER_ADMIN = ;// 超级管理员
}
其中STATUS和AUTH为数据表映射字段名
Api接口输出,示例
{
"code" : ,
"msg" : "success",
"data" : {
"userId" :
}
}
其中code与msg为必填字段,data为空的情况下不填,示例
{
"code" : ,
"msg" : "success",
"data" : {
"userId" :
}
}
其它
数组,键为字符串时候使用单引号,只有一个键时候使用单行,示例
$arr = [ 'userId' => ];
多个键时候使用多行,示例
$arr = [
'id' => ,
'username' => 'admin',
];
还有很多很多规范,大家可以去找一些学习!
PHP开发各种规范,面试秘籍!的更多相关文章
- Steve Yegge:Google面试秘籍
我憋了很长时间想写点关于去Google面试的秘籍.不过我总是推迟,因为写出来的东西会让你抓狂.很可能是这样.如果按统计规律来定义"你"的话,这文章很可能让你不爽. 为啥呢?因为啊- ...
- python基础语法10 函数递归,模块,软件开发目录规范
函数递归: 函数递归指的是重复 “直接调用或间接调用” 函数本身, 这是一种函数嵌套调用的表现形式. 直接调用: 指的是在函数内置,直接调用函数本身. 间接调用: 两个函数之间相互调用间接造成递归. ...
- 如何进BAT,有了这个篇面试秘籍,成功率高达80%!!(附资料)
多年前自己刚来北京找工作的时候,面了一个星期 面了七八家公司才拿到一个offer.而上次跳槽面了不到10家公司基本全过而且都给到了期望的薪资,本来自己在面试前没想到能够这么顺利,回想起来还是自己准备的 ...
- 中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)
前言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~.缩减HC.裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀.但博主始终相信,寒冬之 ...
- Android开发代码规范(转)
Android开发代码规范 1.命名基本原则 在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的.比如,大小写的区分,使用不同字母开头等等.但究其本,追其源,在为一个资源其名称 ...
- java开发命名规范(转载)
java开发命名规范 使用前注意事项: 1. 由于Java面向对象编程的特性, 在命名时应尽量选择名词 2. 驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一起,而 ...
- 51Testing丛书新作《软件测试工程师面试秘籍》
51Testing又有好消息告诉小伙伴了!51Testing软件测试网作品系列重磅推出全新丛书<软件测试工程师面试秘籍> 此次我们邀请到知名互联网企业测试专家李江(G.li),整理并撰写软 ...
- Android开发编码规范(自用)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境 ...
- ym——Android开发编码规范(自用)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境下J ...
- 你不可不看的Android开发命名规范
标识符命名法最要有四种: Camel(骆驼)命名法:除首单词外,其余所有单词的第一个字母大写,如:fooBar; Pascal命名法:所有单词的第一个字母大写,如:FooBar: 下划线命名法:单词与 ...
随机推荐
- Mysql数据库(九)备份与恢复
一.数据备份 1.使用mysqldmp命令备份 (1)备份一个数据库 mysqldump -u root -p dbname table1 table2 ... > D:\BackName.sq ...
- Django配置实现数据库读写分离
django在进行数据库操作的时候,读取数据与写数据(增.删.改)可以分别从不同的数据库进行操作. 1. 在配置文件中增加slave数据库的配置 2. 创建数据库操作的路由分发类 在meiduo_ma ...
- centos 7 防火墙firewall 与iptables 的一些常用命令
CentOS 7的防火墙配置跟以前版本有很大区别,CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本使用iptables不一样. firewall常用命令 service fir ...
- Net Framework,Net Core 和 Net Standard 区别
前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究.下面我将说一下我自己对着三个的认识如果有不 ...
- Microsoft.Extensions.DependencyInjection 之三:反射可以一战(附源代码)
目录 前文回顾 IServiceCallSite CallSiteFactory ServiceProviderEngine CompiledServiceProviderEngine Dynamic ...
- 五、docker-compose开锋(docker 三剑客)
前言 终于写到docker-compose了,其实我最开始接触docker的时候,是因为一个开源项目需要用docker 环境和docke-compose 所以我最先接触的是docker-compse ...
- 小白学 Python(18):基础文件操作
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 利用Nginx中的Upstream模块配置服务器负载均衡
1. 前言 nginx有一个最大的功能就是可以实现服务器的负载均衡,本篇博文就利用nginx中的upstream模块来配置一个简单的负载均衡.关于nginx的安装和配置文件可以查阅博文:windows ...
- VM安装CentOS系统
本篇文章主要介绍了VMware安装Centos7超详细过程(图文) 1.软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:CentOS7 ,如果没有镜像可以在官网下载 :htt ...
- 大数据之路day03--java循环的延申与练习(while 、do-while、for)
在今天,我突然被一个很尴尬的问题问到了,问题是这样的:说一下java循环的应用场景. 我想很多人一下子听到这样的问题不知道怎么回答,大部分人会去想有什么循环格式,特点是什么.这些都是错误的,在往后的面 ...