摘要:為什么我不在的私有變量用下劃線了首先大家都知道在面向對象編程中對修改封閉,對擴展開放的原則所以不對屬性,違反原則。
前言
首先這個問題沒什么好爭論的。類似這種關于代碼規范的問題,目前我的觀點是:
跟隨你面對的團隊,跟隨你面對的代碼塊
最近兩次被別人問到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; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28958.html
摘要:例如汽車這個名詞可以理解為汽車的總類,但這輛寶馬汽車則是一個具體的汽車對象。當在類成員方法內部調用的時候,可以使用偽變量調用當前對象的屬性。在面向對象中則被稱之為方法。 簡述 現在大伙都在講面向對象編程,但是我們也得先找著一個對象是不?不然怎么面向對象?怎么編程? --- 笑話一則,但是理不虧,要搞P面向對象編程,我們起碼要先搞懂對象(還有類)是什么?只有了解它,理解它,你才能駕馭它。...
摘要:函數式編程一開始我并不理解。漸漸地,我熟練掌握了使用函數式的方法去編程。但是自從學習了函數式編程,我將循環都改成了使用和來實現。只有數據和函數,而且因為函數沒有和對象綁定,更加容易復用。在函數式的中,這些問題不復存在。 譯者按: 當從業20的JavaScript老司機學會函數式編程時,他扔掉了90%的特性,也不用面向對象了,最后發現了真愛啊!!! 原文: How I rediscov...
摘要:本文適合閱讀用戶有其他語言基礎的童鞋看完語法教程來回顧一下的童鞋傳送門,想全面看一下語法推薦這里毫無基礎然而天資聰慧頗有慧根不要左顧右看說的就是你,老夫這里有一本從入門到放棄,觀你根骨清奇兩銀子賣給你如何看完本文后你會收獲到什么的變量的定義 本文適合閱讀用戶 有其他語言基礎的童鞋 看完w3cschool語法教程來回顧一下的童鞋(傳送門,想全面看一下php語法推薦這里) 毫無基礎然而天...
摘要:后面可以使用任意字符和下劃線例如非法的變量在函數中創建的,它的生命周期與函數一樣,在主腳本中生成的變量不在函數中不是全局變量,不能在函數中使用它,但是可以用來訪問使用變量的名字作為字符串的關鍵字給程序員一個鼓勵唄微信支付寶 1.類的寫法 class MyClass { private $id = 19; public function __construct() { ...
閱讀 1631·2021-10-14 09:43
閱讀 5534·2021-09-07 10:21
閱讀 1279·2019-08-30 15:56
閱讀 2131·2019-08-30 15:53
閱讀 1236·2019-08-30 15:44
閱讀 2013·2019-08-30 15:44
閱讀 1323·2019-08-29 17:24
閱讀 757·2019-08-29 15:19