php表示私有变量的是,【短文】为什么我不在PHP的私有变量用下划线了?

前言

首先这个问题没什么好争论的。类似这种关于代码规范的问题,目前我的观点是:

跟随你面对的团队,跟随你面对的代码块

最近两次被别人问到php私有变量加下划线的问题,由于我开始也是这么做的,但是最后还是没用下划线了。最后想想还是把自己的想法说下吧。

为什么我不在PHP的私有变量用下划线了?

首先: 大家都知道在面向对象编程中对修改封闭,对扩展开放的原则(所以不对属性public,违反原则)。

但是我们的代码总是事与愿违,在某些场景中我们需要对外可修改我们的属性。这里就会经常见到一些getXXX和setXXX之类的成员方法。

然而: 对于getXXX和setXXX,我更习惯于魔术方法__get和 __set,这两个魔术方法其实就可以运用到这个场景,因为可以统一对外暴露属性,并加以控制,防止的滥用,符合面向对象的思想。

但是: 对外暴露一个加下划线的私有属性,看起来好怪(既然私有的被外部访问了为啥还加下划线)。

// 像这样

(new Demo)->_XXX

所以: 我会在魔术方法__get和 __set里面统一加下划线,这样这个私有属性就可以不带下划线访问了。

class Demo

{

public function __set($name = '', $value = '')

{

$argu = "_{$this->$name}";

return $this->$argu = $value;

}

public function __get($name = '')

{

$argu = "_{$this->$name}";

return $this->$name;

}

}

这样: 对外可以暴露的私有属性就没下划线了。

可是: 魔术方法__get和 __set里面加这个又感觉怪怪的。

结果: 所以干脆不加了。

其次: 想了想也没哪有这个硬性规定。

最后如下:

class Demo

{

public function __set($name = '', $value = '')

{

return $this->$name = $value;

}

public function __get($value = '')

{

return $this->$value;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值