CodeIgnitor编码规范与建议

美观

1. 数组标识

定义数组时,应当根据php版本选择不同的定义方式,新版本的定义方法往往更加美观:
- 对于PHP 7以前的版本,只能使用array()
- 对于PHP 7之后的版本,定义数组时使用[]更好

2. 数组追加

在对数组进行追加时,不可使用+=号,最美观简单的方法是使用PHP特有的连加符号:

$Array1 = ["1"];
$Array2 = ["2"];
$Array1[] = $Array2;
var_dump($Array1) // 输出Array([0]=>"1",[1]=>"2")

!注意:
PHP中所有数组的值都是有$key前缀的,如:

$Array = [1,2,3];

实际上,$Array应当被看做如下形式:

$Array = [[0]=>1,
          [1]=>2,
          [2]=>3];

效率

1. 列表匹配select

当进行类似如下操作:

foreach($idList as $id){
    $this->db->select()->from('table')->where(['id'=>$id])->get()->result_array();
}

我们发现这么做会多次访问数据库,效率很低,这时可以使用where_in限定将访问次数降为一次:

$this->db->select()->from('table')->where_in('id',$idList)->get()->result_array();
2. select应当指定具体值

在进行select的时候,需要什么值,最好在select中指定出来,一是提高代码可读性,而是提高搜索效率、减小数据传输量

//Bad way:
$result = $this->db->from('attachment')->where(['id'=>$id])->get()->result_array();
$id = $result[0]['id'];//其他不需要的值会浪费内存

//Good way:
$this->db->select(['id','name','location'])->from('attachment')->where(['id'=>$id])->get()->result_array();
$id = $result[0]['id'];//只选取三个值,内存占用少得多
3. 函数形参应标注类型

标注形参类型的函数声明方式可以大大减小函数出错的概率,在debug期间就能把很多问题扼杀在初期:

public function getPage(int page){}

Database构造器类

1. 获取自增ID值

对于数据库中具有Auto_increment的ID属性,在进行了insert操作后,可以直接使用insert_id获得id值,不需要再select一次:

$this->db->insert('details', $detailsArray);
$id = $this->db->insert_id();
2. Update和Delete等操作的where限定应该在确认函数前添加

!使用where_in时,必须把where_in放在delete前面:

$this->db->where_in('id',idArray)->delete('user'); 

!附加理解
CI的db构造器类使用时,where或where_in等限制的必须放在执行函数前
- 对于DELETE,UPDATE等命令来说,其执行函数为自身,也就是update(),delete()
- 对于SELECT来说,执行函数为get()

一般性错误

1. $_Session变量只能在Controller中使用,不可出现在Model中

TIPS

1. 不要过度依赖自己定义的Private函数

过多的封装Private函数会降低代码可读性,因此,若不是需要多次重用的代码,最好不要将其进行封装。

2. 给定类型的函数形参在指定默认值时可能发生错误

在项目过程中,我们团队发现,当测试环境苛刻时,以下代码将报错:

public function getPage(int page=1){
    ...
}

改为以下将恢复

public function getPage(page=1){
    ...
}

原因已经明了:那个兄弟用的是PHP 5.X

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值