博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
getter与setter的意义
阅读量:7243 次
发布时间:2019-06-29

本文共 1009 字,大约阅读时间需要 3 分钟。

  hot3.png

很多php码农不知道getter和setter的意义在哪里,认为写getter和setter完全是画蛇添足。所以在使用php的类的时候喜欢定义一个公开属性,比如

这样的方式去定义,然后通过

$user = new User();$id = $user->id;

这样的方式去调用属性。这样写确实很方便,开发的时候能节省不少的代码。然而这样的写法会引出一个维护的问题。例如:

场景一:

setToUser($user->username)->send();

场景二:

setToAddress($user->email)->send();

在上面两个场景中,似乎没啥问题。突然有一天,你的老板抽了,说我们的username全部取消,统一使用email。那么问题来了,你要找出所有$user->username的地方全部改为$user->email。在一个真正的项目中,不仅仅是两个地方会用到这样的代码,有可能成百上千个。这些你都要一个一个的找出来全部改掉,还不能遗漏,否则就会留下bug。

上述类似的应用场景想必不少码农都遇到过。假设我们在写代码的时候使用getter和setter就能很好的解决上述问题。

我们重新定义User

id;    }        public function getUsername()    {        //user的getter返回了email        return $this->getEmail();    }        public function getEmail()    {        return $this->email;    }}

场景一:

setToUser($user->getUsername())->send();

场景二:

setToAddress($user->getEmail())->send();

使用username的地方都会获取到email。

总结,善用getter与setter能帮助我们建立更具维护性的代码。写代码并不是在开发的时候简便就行了,同样要思考以后维护的成本。初期多几行代码,多几个字母,写两个getter和setter能为以后的维护节约非常的多的成本,何乐而不为

转载于:https://my.oschina.net/7sites/blog/413773

你可能感兴趣的文章
Common Lisp通过CFFI调用C动态库
查看>>
Beyond SQLi: Obfuscate and Bypass
查看>>
Spring(二):配置和简单使用
查看>>
Java中的try-catch机制的要点
查看>>
web.xml 中的listener、 filter、servlet 加载顺序及其详解
查看>>
group by,having,where
查看>>
shiro概念(转)
查看>>
svn中出现的符号解析
查看>>
Android中attrs.xml
查看>>
Eclipse开启错误“Failed to create the java virtual mach
查看>>
LibSVM学习(三)——LibSVM使用规范
查看>>
Struts2.3.15.2配置
查看>>
ubuntu 14.04下chrome显示标题乱码问题
查看>>
eclipse hadoop2.7.3 环境搭建
查看>>
Jacob模板替换生成word文件、word合并、word转pdf文件
查看>>
代理模式
查看>>
IE6,IE7 DIV固定高度的技巧
查看>>
浅谈CSS不常用的设置(1)——image-rendering
查看>>
五种常见的 PHP 设计模式
查看>>
数据库索引的作用和优点缺点
查看>>