资源描述
PHP开发规范说明.docx
《PHP开发规范说明.docx》由会员分享,可在线阅读,更多相关《PHP开发规范说明.docx(11页珍藏版)》请在冰豆网上搜索。
![PHP开发规范说明.docx](https://file1.bdocx.com/fileroot1/2022-12/8/423ba5ec-2039-4792-abf4-5e29cfef96e2/423ba5ec-2039-4792-abf4-5e29cfef96e21.gif)
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中
{$page_bar}
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=“”,true)
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">
请选择公司
{$company_kv_store[$key]}
{$company_kv_store[$key]}
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__dev。
在云中控平台中,使用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。