🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 编码规范 ## 编码规范 XiunoPHP 提倡 Linux 的编码风格(小写 + 下划线),与 PHP 默认的命名风格保持一致,但如果您喜欢匈牙利和骆驼也没有关系。 ### 1. 变量名,函数名全部为: 小写 + 下划线,比如: ``` <pre class="calibre11">``` <?php $uid = 0; $username = ''; mysql_connect(); mysql_query(); mysql_fetch_assoc(); ?> ``` ``` ### 2. 常量全部大写: ``` <pre class="calibre11">``` <?php define('DEBUG', 1); // 1: 开发模式, 2: 线上调试:日志记录,0: 关闭 define('APP_NAME', 'www'); ?> ``` ``` ### 3. 空格,缩进,换行,参考以下格式: 一个 TAB = 8 个空格,尽量减少 TAB 缩进。 ``` <pre class="calibre11">``` <?php function array_addslashes(&$var) { if(is_array($var)) { foreach($var as $k=>&$v) { array_addslashes($v); } } else { $var = addslashes($var); } return $var; } ?> ``` ``` ### 4. 单引号、双引号: 在PHP 当中,尽量使用单引号,解析速度比双引号快。 如果里面包含变量,为了代码的美观,可以使用双引号。 在双引号中的数组 key 不应该加单引号。 在单引号中仅仅转义 \\,其他字符都不转义,如 \\t\\r\\n $。 以下为正确用例: ``` <pre class="calibre11">``` <?php $sitename = '我在北京吸雾霾'; $info = "站点名称:$sitename"; $info = "用户名:$user[name]"; ?> ``` ``` ### 5. 类、继承、接口、构造、析构、魔术方法: 尽量不要使用 PHP 高级特性。 高级特性往往不利于底层的优化,需要更多的学习和沟通成本。 比如 **get()** set() \_\_call() 会让代码变得很难读,IDE 提示也不友好。 不是刚需,不要用。 ### 6. 正则表达式: 尽量使用单引号,分隔符为 # 。 禁止使用 e 修饰符,如果刚需,请使用 preg\_replace*callback() 代替。 尽量使用 \\w \\s \\S 内置的表示方法,不要啰嗦的去写 \[0-9a-zA-Z*\] 。 为什么不用 / 作为分隔符? 因为 WEB 开发过程中,字符串中出现 / 的概率太高。 以下正则格式符合标准: preg\_match('#\\w+@\\w+.\\w+#is', $email); ### 7. include include\_once require require\_once: 尽量使用 include,速度快,并且不会中断业务逻辑。 require 在文件不存在或不可读的时候,会暴力终止业务逻辑。 ### 8. error\_reporting: 在本地开发环境下使用,使用 E\_ALL,消灭所有 NOTICE。 线上环境使用 0,并且配置 php.ini error\_log 记录到服务器日志,避免错误信息外泄。 ### 9. 模板: 不要用 Smarty 等任何类型的模板“引擎”,他们不时真正意义上的引擎,只是一堆正则替换而已。而且效率低下,学习的时间成本高,浪费脑细胞。 直接使用 PHP 的 原生标签,比如: ``` <pre class="calibre11">``` <?php include "./view/htm/header.inc.htm"; ?> Hello, <?php echo $username; ?>! <?php include "./view/htm/footer.inc.htm"; ?> ``` ``` ### 10. 目录约定: 为了便于部署和排查,约定以下目录用途(非强制): ``` <pre class="calibre11">``` Web 目录:/home/wwwroot/xxx.com Web 日志:/home/wwwlog MySQL 数据:/home/mysql 备份目录:/home/backup Nginx 配置文件:/usr/local/nginx/conf/nginx.conf MySQL 配置文件:/etc/my.cnf PHP 配置文件:/usr/local/php/etc/php.ini PHP-CGI 配置文件:/usr/local/php/etc/php-fpm.conf ``` ``` ### 11. 生产环境推荐: CentOS + PHP7 + MySQL 5+ Opcache + Yac