希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。
wellcms 主程序架构采用函数风格的 MVC 分层架构,AOP 插件机制,面向切面编程。
开发约束:采用静态语言编程风格,有利于 Zend 引擎的编译和 OPCache 缓存,支持 PHP7*
为了保持统一性,wellcms 对类、函数和变量命名进行了约定。我们提倡 Linux 的编码风格(小写 + 下划线),与 PHP 默认的命名风格保持一致,如果您喜欢匈牙利命名和驼峰式命名法也可以。
1. 变量名,函数名全部为单词或缩写单词小写 + 下划线分割,禁止使用拼音,比如:
<?php $uid = 0; $username = ''; mysql_connect(); mysql_query(); mysql_fetch_assoc(); ?>
2. 常量全部大写:
<?php define('DEBUG', 1); // 0: 关闭 1: 开发模式 2: 线上调试:日志记录, define('APP_NAME', 'www'); ?>
3.空格,缩进(一个 TAB = 8 个空格),换行,参考以下格式:
<?php define('SKIP_ROUTE', 1); include './index.php'; function array2_merge($array1, $array2, $key = '') { $arr = array(); foreach ($array1 as $k => $v) { isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]); } return $arr; } ?>
4.单引号、双引号的使用
在 PHP 当中,尽量使用单引号,解析速度比双引号快。如果包含变量,为了代码的易读性,可以使用双引号,在双引号中的数组 key 不应该加单引号。在单引号中仅仅转义 \,其他字符都不转义,如 \t\r\n $。
<?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.使用 php 内置函数,php内置了很多函数,不要自己去写一些没有必要的函数。
10. 禁止使用 eval() 。
11. 尽量避免 autoload。
12. 尽量避免 $$var 多重变量。
13.尽量采用函数封装功能,通过前缀区分模块。
14.为了安全,所有业务一律解析到路由运行,不在 tmp 外的目录运行 php 文件。
15.操作数据库的语句,函数封装好使用,禁止在业务代码中使用 mysql 语句。
16.保持代码可读性,完整的注释,js 代码结束必须使用英文分号 “ ; ”,js 注释请使用块注释,即 /* 注释内容 */
17.尽量使用 bootstrap 内置的 class ,不要自己写 class 和 style ,当然你也可以完全放弃bootstrap使用其他前端框架。
如刚需,请定义 class 使用,新定义的id和class请加前缀,以免相互冲突(如:.well_tag{} #well_tag{}),颜色使用 bootstrap 内置的class 或 使用 wellcms 内置颜色。
颜色请查看 view/css/wellcms_x.css
颜色调用如 background: var(--gray-200);
如果您对网站的内容有任何想法或意见,请call我!~~
内容页替换代码{siteLinks:do($content)} if (navigator.userAg......
Lecms是如何加载公共模板文件的?{inc:head.htm}需要注意:文件命名方式为:inc-head.htm...
使用layer 弹出图片预览 自适应修改require-table.js 单图image: function (value, row, index) { value = value ? value : '/assets/img/blank.gif'; ......
在FastAdmin中的图片上传或文件上传默认都是使用相对地址的,比如/uploads/2019/20190423/8d0e03098dc8fb18a283e70e6fddebec.jpg一般情况下在PC端使用都不会有问题。但是如果......
.article-nav{ border-radius: 5px; padding-top: 15px; padding-left: 25px; padding-bottom: 20px; color: #606060; background-color: #f5f5f5; width......
比如栏目连接为:https://www.ecmsw.cn/service/我现在要获取service这个目录名称,那么应该写法如下:<?$r['classid']=$GLOBALS[navclassid];$classurl=sys_ReturnBqClassnam......
一个页面 2个表单,按fa默认提交到同一个控制器staffuser下的detail方法,另一个表单默认也是提交到该方法,要怎么实现将表单2提交给另一个方法,如info方法,然后能正常接收......
应用后台管理应用所有后台操作代码都写在应用唯一标识.admincp.php请求链接为:admincp.php?app=应用唯一标识&do=执行的操作<?phpclass 应用唯一标识Admincp{ public ......
微信扫码分享