PHP编码规范
ECOS命令行模式
执行 cd app/base && php cmd help 查看所有可用命令
例:
shell
# 生成数据字典
php cmd dev:doc dd > OMS数据字典标准开发规范
标准注释规范
php
<?php
/**
* @name 名字
* @abstract 申明变量/类/方法
* @access 指明这个变量、类、函数/方法的存取权限
* @author 函数作者的名字和邮箱地址
* @category 组织packages
* @copyright 指明版权信息
* @const 指明常量
* @deprecate 指明不推荐或者是废弃的信息
* @example 示例
* @exclude 指明当前的注释将不进行分析,不出现在文挡中
* @final 指明这是一个最终的类、方法、属性,禁止派生、修改。
* @global 指明在此函数中引用的全局变量
* @include 指明包含的文件的信息
* @link 定义在线连接
* @module 定义归属的模块信息
* @modulegroup 定义归属的模块组
* @package 定义归属的包的信息
* @param 定义函数或者方法的参数信息
* @return 定义函数或者方法的返回信息
* @see 定义需要参考的函数、变量,并加入相应的超级连接。
* @since 指明该api函数或者方法是从哪个版本开始引入的
* @static 指明变量、类、函数是静态的。
* @throws 指明此函数可能抛出的错误异常,极其发生的情况
* @todo 指明应该改进或没有实现的地方
* @var 定义说明变量/属性。
* @version 定义版本信息
*/OMS开发规范
命名定义
service命名
格式:{app}.service.{类}.{方法}.{after/before}
按钮权限命名
格式:{app}.action.{业务}.{add/del}
对象变量命名
使用Mdl后缀作为model目录下类对象变量,使用Obj后缀作为lib目录下类对象变量,例:
php
$orderMdl = app::get('ome')->model('orders');
$orderObj = kernel::single('ome_order');类方法声明
类声明必须指定使用域:public、protected、private。
私有方法,以英文下划线(_)开头。
使用index前缀作为finder列表。
使用display前缀作为Dailog加载页面,并使用驼峰形式。
使用page前缀作为右侧加载页面,并使用驼峰形式,例:
php
// 列表页
public function indexOrder()
{
$this->finder('ome_mdl_orders');
}
// dailog页
public function displayAddOrder()
{
$this->display('add.html');
}
// 右侧页
public function pageAddOrder()
{
$this->page('add.html');
}
// ajax查询
public function addOrder()
{
$data = [
'order_bn' => '1234567890'
];
$this->splash('success', null, '成功', '', $data);
}
// ajax提交
public function addOrder2()
{
$this->begin($this->url);
list($rs, $msg) = kernel::single('ome_order')->addOrder($param);
$this->end($rs, $msg);
}类方法返回
使用状态+信息的方式,例:
php
public function addOrder($param)
{
return [false, ['msg'=>'创建失败']];
}类属性命名
使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母。
私有属性,使用英文下划线(_)开头。
类常量,使用大写命名,例:
php
class A
{
public $shipName = '收货人姓名';
private $_shipName = '收货人姓名';
const SHIP_STATUS = 0;
}Dailog定义
Dailog页面加载
使用display加载页面
php
public function displayAdd()
{
$this->display('add.html');
}Dailog页面渲染
确认按钮,取消按钮使用area标签,并使用统一JS触发form表单提交,例:
html
<div class="tableform">
<div id="add-errorinfo" class="error" style="display:none;"></div>
<form id="add-form">
<div class="division">
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<th><em class="c-red">*</em> label1</th>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="division">
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<th><em class="c-red">*</em> label2</th>
<td></td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
<{area inject=".mainFoot"}>
<div class="table-action">
<{button label="确定" class="btn-primary" id="add-submit"}>
<{button label="取消" class="btn-secondary" isCloseDialogBtn="true" }>
</div>
<{/area}>
<script type="text/javascript">
(function(){
$('add-submit').addEvent('click',function(){
$('add-form').fireEvent('submit',{stop:function(){}});
})
$('add-form').store('target', {
onRequest:function(){
$E('#add-submit').disabled = true
$E('#add-submit span span').setText('提交中...')
$('add-errorinfo').hide()
},
onComplete:function(resp){
$E('#add-submit').disabled = false
$E('#add-submit span span').setText('确定')
resp = JSON.decode(resp);
if (resp.error){
return $('add-errorinfo').setText(resp.error).show();
}
$('add-form').getParent('.dialog').retrieve('instance').close();
}
})
})()
</script>AJAX请求
使用框架统一方法wpage,例:
javascript
<script type="text/javascript">
W.page('index.php?app=ome&ctl=admin_order&act=show',{
update:$('order-content'),
method:'GET',
data:{
p:['taobao','10.00'],
order_id: '1'
},
clearUpdateMap:false
});
</script>HTML统一页面结构
html
<div class="form-layout">
<form>
<div class="form-layout-block">
<h3>块标题</h3>
<div class="form-layout-fields">
<div class="form-field">
<span class="form-field-label">小块类型</span>
<div class="form-radios">
<label><input name="sex" type="radio" value="1">单选按钮</label>
</div>
</div>
<div class="form-field">
<span class="form-field-label">N个小块</span>
<input class="form-input" placeholder="请输入" />
</div>
</div>
</div>
<div class="form-layout-block">
<h3>第二块信息</h3>
<div class="form-layout-fields">
<!-- 普通输入 -->
<div class="form-field">
<span class="form-field-label">名称:</span>
<input class="form-input" placeholder="请输入" />
</div>
<!-- 下拉选择 -->
<div class="form-field">
<span class="form-field-label">名称:</span>
<select class="form-input" placeholder="请选择">
<option value="1">张三</option>
<option value="2">李四</option>
</select>
</div>
<!-- 单选 -->
<div class="form-field">
<span class="form-field-label">单选:</span>
<div class="form-radios">
<label><input name="sex" type="radio" value="1">单选按钮1</label>
<label><input name="sex" type="radio" value="2">单选按钮2</label>
</div>
</div>
</div>
</div>
<div class="form-layout-block">
<h3>如果需要名称与输入框在一行展示需要加上类名"form-layout-fields-column"</h3>
<div class="form-layout-fields form-layout-fields-column">
<div class="form-field" style="width: 100%">
<span class="form-field-label">上传文件:</span>
<div>
<button class="btn-primary">选择文件</button>
<span>未选择任何文件</span>
</div>
</div>
<!-- 普通输入 -->
<div class="form-field">
<span class="form-field-label">普通输入:</span>
<input class="form-input" placeholder="请输入" />
</div>
<!-- 下拉选择 -->
<div class="form-field">
<span class="form-field-label">下拉选择:</span>
<select class="form-input" placeholder="请选择">
<option value="1">张三</option>
<option value="2">李四</option>
</select>
</div>
<!-- 单选 -->
<div class="form-field">
<span class="form-field-label">单选:</span>
<div class="form-radios">
<label><input name="sex" type="radio" value="1">单选按钮1</label>
<label><input name="sex" type="radio" value="2">单选按钮2</label>
</div>
</div>
<!-- 多选 -->
<div class="form-field">
<span class="form-field-label">多选:</span>
<div class="form-checkbox">
<label><input name="sex" type="checkbox" value="1">选项1</label>
<label><input name="sex" type="checkbox" value="2">选项2</label>
<label><input name="sex" type="checkbox" value="3">选项3</label>
</div>
<p class="form-remark">选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3</p>
</div>
<!-- 禁用状态 -->
<div class="form-field">
<span class="form-field-label">文本框禁用状态:</span>
<input class="form-input form-disabled" placeholder="请输入" />
<p class="form-remark">选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3选项3</p>
</div>
<!-- 文本域 -->
<div class="form-field" style="width: 50%">
<span class="form-field-label">文本域:</span>
<textarea class="form-input" style="height: 100px" placeholder="请输入文本域" ></textarea>
</div>
<!-- 提示信息 -->
<div class="form-field">
<span class="form-field-label">提示信息<i class="iconfont icon-question-circle1" title="提示信息"></i>:</span>
<input class="form-input" placeholder="请输入" />
</div>
<!-- 按钮 -->
<div class="form-field">
<span class="form-field-label">按钮</span>
<button class="btn-primary">普通确定</button>
<button class="btn-danger">高亮红色</button>
<button class="btn-primary" disabled="disabled">按钮禁用</button>
</div>
</div>
</div>
<div class="form-actions">
<!-- 按钮页面底部固定 -->
<a class="btn btn-default">关闭</a>
<button class="btn-primary">保存</button>
</div>
</form>
</div>HTML属性id、class命名
使用中划线(-)作为链接符,例:
html
<div id='order-content' class='order-content'>
</div>HTML属性INPUT
html
// text
<{input type="text" }> 或 <input class="x-input" />
// select
<{input type="select" }> 或 <select class="x-select" />
// checkbox 需要label标签包裹,可实现选中文字勾选
<label><input type="checkbox" />点文字也可勾选哦</label>字符串定义
PHP、XML、JS使用单引号作为字符串,HTML使用双引号作为字符串定义
php
# PHP
$str = '字符串';
# XML
<menu name='订单中心'></menu>
# HTML
<div id="id"></div>
# js
var str='字符串'SQL定义
关键词大写
sql
$sql = 'SELECT * FROM sdb_ome_orders WHERE order_id=1;'权限命名定义
使用{app}_{ctl}_{act}格式字段权限id,例:
xml
<desktop>
<permissions>
<!-- 其中控制器的admin可以忽略 -->
<permission id="dacenter_allocation_indexBrandOrder" >直销订单配货</permission>
</permissions>
<workground name="配货中心" id="dacenter_center" order="10600">
<menugroup name="直销配货">
<menu controller='admin_allocation' action='indexBrandOrder' >订单配货</menu>
</menugroup>
</workground>
</desktop>全局变量调用
使用base_component_request获取$_POST $_GET $_REQUEST $_COOKIE global static等全局变量值,严禁直接调用赋值。
