PHP开发规范说明.docx
- 文档编号:4728748
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:11
- 大小:36.29KB
PHP开发规范说明.docx
《PHP开发规范说明.docx》由会员分享,可在线阅读,更多相关《PHP开发规范说明.docx(11页珍藏版)》请在冰豆网上搜索。
PHP开发规范说明
1目的
2代码规范要求
3程序设计原则
3.1Model层
所有与数据库表本身操作方法,都封装在自己的Model类中,不单独在外提供封装。
每个Model基于ThinkPHP都已经封装好了一套DB操作方法。
3.1.1基类
3.1.1.1Model
ThinkPHP原生Model基类。
不能修改。
在基于单表的数据CURD操作,使用Model原生成的功能。
如:
3.1.1.1.1Insert
$role_user_model->add(array("role_id"=>$role_id,"user_id"=>$uid,"oem_code"=>parent:
:
oem_code()));
3.1.1.1.2Update
if(IS_POST){
$_POST['id']=get_current_admin_id();
$_POST["oem_code"]=parent:
:
oem_code();
$create_result=$this->users_model->field("user_login,user_email,last_login_ip,last_login_time,create_time,user_activation_key,user_status,role_id,score,user_type,oem_code",true)//排除相关字段
->create();
if($create_result){
if($this->users_model->save()!
==false){
$this->success("保存成功!
");
}else{
$this->error("保存失败!
");
}
}else{
$this->error($this->users_model->getError());
}
}
3.1.1.1.3Delete
$id=intval(I("get.id"));
if($this->users_model->where("id=$id")->delete()!
==false){
M("RoleUser")->where(array("user_id"=>$id,"oem_code"=>parent:
:
oem_code()))->delete();
$this->success("删除成功!
");
}else{
$this->error("删除失败!
");
}
3.1.1.1.4Where
$id=get_current_admin_id();
$user=$this->users_model->where(array("id"=>$id,"oem_code"=>parent:
:
oem_code()))->find();
3.1.1.1.5Page
ThinkPHP已经实现好了分页栏位计算方法。
HTML中
PHP中
$count=$this->users_model->where($condition_user)->count();
$page=$this->page($count,20);
$users=$this->users_model
->where($condition_user)//加了过滤
->order("create_timeDESC")
->limit($page->firstRow.','.$page->listRows)
->select();
$this->assign("page_bar",$page->show('Admin'));//Admin是模板名称,默认可以不填
$this->assign("users",$users);
3.1.1.2CommonModel:
Model
通用Model。
构造时会所用默认的数据库连接。
3.1.1.3OemModel:
CommonModel:
Model
针对不同OEM需要访问自己的DB时所使用的Model。
重写了构造函数,初始化时会使用OEM定义好的数据库连接信息。
3.1.2通用设置
3.1.2.1自动后台验证
//自动验证
protected$_validate=array(
//array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
array('name','require','用户名称不能为空!
',1,'regex',ComentsModel:
:
MODEL_INSERT),
);
3.1.2.2默认值设定
protected$_auto=array(
array('create_time','time',1,'function'),
array('update_time','time',2,'function'),
);
3.1.3通用方法
目前Model中可以通用的方法都写在CommonModel中。
个人尽量不要在些文件中定义自己的函数,如果确认有的方法很常用、很通用,提交项目组进行讨论并确认后,方可写入CommonModel文件中。
ThinkPHP提供了的原生数据库表操作功能,非常基础的Table操作可以直接写在上层代码中,如Controller中可以直接进行调用。
原生的快速数据库操作方法:
3.1.3.1Selecttop10*fromTablewherecondition
$list=$this->where($condition)->limit(10)->select();
3.1.3.2Selectaasaa,b,cfromtablewherecondition
$list=$this
->where($arrayCondition)
->field(array(“a”=>”aa”,“b”,“c”))
->select();
return$list;
3.1.3.3Inserttable(a,b,c)values(a,b,c)
普通做法:
$data['create_time']=date("Y-m-dH:
i:
s",time());
$data['code']=uniqid();
$result=$this->add($data);
使用ThinkPHP直接从POST中将Form数据存库方法:
if(IS_POST){
$_POST["oem_code"]=100;
if($this->menu_model->create()){
if($this->menu_model->save()!
==false){
…
3.1.3.4Updatetableseta=@awhereid=@id
$data['id']=100;
$data['update_time']=date("Y-m-dH:
i:
s",time());
$result=$this->save($data);
3.1.3.5Deletetablewhereid=@id
$result=$this->where("id=$id")->delete();
目前可以使用的自定义方法如下:
3.1.4自定义方法
所有与自身表数据有关的操作,各自封装在自己的Model文件中。
命名规则:
<操作><实体><条件>(….)
✓getRegisterUser(….);
✓setUserAgeById($id,$age);
✓getUsersByCondiation($condition);
✓deleteUserByCompanyAndStatus($company,$status);
3.2BusinessLogic层
没想好放在哪个目录下
3.2.1命名规则
3.2.1.1类名
按业务场景起名
如:
✓AlarmLogic
✓PurchaseLogic
✓CrmLogic
✓NotificateLogic
3.2.1.2方法命名规则
动词+名词
如:
✓moveAlarmToOtherUser($alarmid,$userid);
✓copyNotificationToCompany($notificateid,$companyid);
✓deleteExpireUserByCompanyPolicy($companyid);
3.3CommonFunction层
路径:
Application/Common/Common/Function.php下。
全局功能性的函数,或者全局通用的方法都写在这里。
目前定义的函数如下
3.3.1iot_oem_code()
取当前用户所属的oem_code。
3.4Session的使用
3.4.1$_SESSION[“user”]
4表单处理
4.1列表页面
4.1.1文件名定义
✓index
✓list
✓home
✓search
4.2添加页面
4.2.1文件名定义
✓add
✓create
4.2.2后台Action名
✓add_post
✓create_post
U('User/add_post')}"> functionadd_post() { if(IS_POST){ $_POST["oem_code"]=parent: : oem_code(); if(! empty($_POST['role_id'])&&is_array($_POST['role_id'])){ $role_ids=$_POST['role_id']; unset($_POST['role_id']); if($this->users_model->create()){//从表单中直接实例化变量 //创建一个新用户 $result=$this->users_model->add();//保存数据库 if($result! ==false){ //为这个新用户创建角色 $role_user_model=M("RoleUser"); foreach($role_idsas$role_id){ $role_user_model->add(array("role_id"=>$role_id,"user_id"=>$result,"oem_code"=>parent: : oem_code())); } $this->success("添加成功! ",U("user/index")); }else{ $this->error("添加失败! "); } }else{ $this->error($this->users_model->getError()); } }else{ $this->error("请为此用户指定角色! "); } } } 4.3编辑页面 4.3.1文件名定义 ✓edit 4.3.2后台Action名 ✓edit_post 4.4内容页面 4.4.1文件名定义 ✓Detail ✓Info 4.5删除 4.5.1后台Action名 ✓delete 4.6表单数据读取 4.6.1I(“get. 4.6.2I(“post. 4.6.3$_GET[“ 4.6.4$_POST[“ 4.6.5$_GET+$_POST $GETPOST=array_meager($_GET,$_POST); 5常用功能 5.1数据库操作 5.1.1转换成Model 5.1.1.1D(“Common/ModelName”) 5.1.1.2M(“ModelName”) 5.2JSON 5.2.1String->JSON 5.2.1.1json_decode 将string按json解析成array对象: $cmf_settings=“ 5.2.2object->string(JSON) 以Json格式(0)对$object进行序列化,序列化100个层级关系: $json_string=$object,0,100); 简化写法: $json_string=$object); 5.2.3读写配置文件 ThinkPHP默认的配置文件在App/Common/Conf/Config.php文件中进行定义。 5.2.3.1读 $config=C(“配置项目名称”); 5.2.3.2写 C(“配置项”)=$config; 5.3数组操作 5.3.1array_merge($arrayA,$arrayB) 5.4MVC 5.4.1$this->display(": search") 5.4.2$this->assign("keyword",$k) 6程序设计文档 6.1CompanyEquipment 6.1.1Model 6.1.1.1getCompanyKeyValue($condition=null) 返回可以使用的Company,字段是key,value,代表code,name。 主要用于html中的dropdown控件使用 返回值: array(size=4) 'SuJWlBoFkr'=>string'上海维沃重工机械有限公司'(length=36) 'K5QIohn6L7'=>string'没有测试'(length=12) 'OEM_000001'=>string'泰安华鲁锻压机床有限公司'(length=36) 'TREYUTYTRE'=>string'鞍山宝马钢材物流中心销售有限公司'(length=48) PHP中用法: $company_kv_store=$this->company_model->getCompanyKeyValue(array("oem_code"=>iot_oem_code())); $this->assign("company_kv_store",$company_kv_store); HTML中用法: 150px;"id="company"name="company"class="normal_select"> 7部署的程序说明 7.1鞍山项目 服务器: 123.57.157.144 软件: WebAccess、MySQL、DotNet 7.1.1程序启动 7.1.1.1MySQL数据库 7.1.1.2WebAccess 7.1.1.3Grape.Ant服务 C: \CTC\Services\Grape\Grape.Ant Get: <取到的数据数量> Delete: <删除的数据量> ServerResponse: 7.2云中控平台 7.2.1配置新OEM 在Aliyun的RDS中创建OEM数据库iot_oem_ 在云中控平台中,使用Platform_admin帐号,创建OEM,配置Config中相关数据库连接信息。 Platform_code表中增加对应OEM的计算器。 在云中控平台中,创建一个该OEM下的管理员。 在RabbitMQ中配置对应OEM的消息队列。 在RabbitMQ中,配置对应的Exchange参数。 配置223服务器上中服务,每个OEM有4个批处理文件,修改这四个批处理文件的参数为OEM的Codee。 修改_start.bat文件,加上新增的OEM批处理文件,并启动此批处理文件。 7.2.2程序启动 统一启动,请在D: \CTC\Backgroupd_Services\main下运行_start.bat。 _dev。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 开发 规范 说明