這兩個函式主要用在物件導向中。
類有很多private
屬性的變數,這些物件在類外是不能被呼叫的,但是有時候你卻非常的想在類外對這類物件進行賦值操作,如果你是一名
c++程式設計師的話肯定會這樣做
:
class a
}
這樣就可以對私有變數name
進行賦值,但是這樣的缺陷是,你要是在類外想對id和
age賦值的時候需要接著再寫兩個函式。
如果是php
程式的話,遇到此類問題你就會從容多了。因為
php為我們提供了
__set
函式。
對於這幾個函式,我是這麼理解的。
__set 可以修改對應私有變數的值,同時也對私有變數進行了一些特殊處理,這個特殊處理的結果就是
isset()
變數,返回值為真。
__get 外部可以直接獲取變數的值。
__unset 呼叫這個函式相當於登出了變數,
__isset
的時候返回
false
下面我們就看看php
是怎麼解決這個問題的。以下是一段
php**:
用法就是這樣的
class base
function __get($property_name)
function __isset($property_name)
function __unset($property_name) }
$p = new base();
$p->name = "php code";/*可以直接對name賦值,無視其private屬性*/
echo $p->name; /*可以直接列印*/
unset($p->name); /*取消name外部可見的屬性*/
echo $p->name; /*這個時候就非法了*/
關於C 中get和set
在程式中經常碰到get set,不甚明白,在網上查詢時也說的迷迷糊糊,所以整理下,以學的明白透徹點。有兩個類person public class person public class person 第乙個型別的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了,而...
JavaScript中Get和Set訪問器的實現
我們常用的實現方法可能是這樣的 function field val this setvalue function val var field new field test field.setvalue test2 field.getvalue return test2 標準的get和set訪問器的...
php物件導向分頁,PHP中物件導向的分頁類
page new page 53,10 p page rendor echo var dump p echo 分頁類 class page protected url url protected pagecount 總頁數 protected total 總條數 protected num 每頁顯示...