第十一節 過載 11

2022-10-06 15:24:26 字數 938 閱讀 8988

php4中已經有了過載的語法來建立對於外www.cppcns.com部物件模型的對映,就像j**a和com那樣. php5帶來了強大的物件導向過載,允許程式設計師建立自定義的行為來訪問屬性和呼叫方法.

過載可以通過__get, __set, and __call幾個特殊方法來進行. 當zend引擎試圖訪問乙個成員並沒有找到時,php將會呼叫這些方法.

在例6.14中,__get和__set代替所有對屬性變數陣列的訪問. 如果必要,你可以實現任何型別你想要的過濾. 例如,指令碼可以禁止設定屬性值, 在開始時用一定的字首或包含一定型別的值.

__call方法說明了你如何呼叫未經定義的方法. 你呼叫未定義方法時,方法名和方法接收的引數將會傳給__call方法, php傳遞__call的值返回給未定義的方法.

listing 6.14 user-level overloading

<?php

class overloader

else }

function __set($property_namwww.cppcns.come, $value)

function __call($function_name, $args) }

$o = new overloader();

//invoke __set() 給乙個不存在的屬性變數賦值,啟用__set()

$o->dynaprop = "dynamic content"; iqcjzuir

//invoke __get() 啟用__get()

print($o->dynaprop . "

n");

//invoke __call() 啟用__call()

$o->dynamethod("leon", "www.cppcns.comzeev");

?>

本文標題: 第十一節 過載 [11]

本文位址:

第十一講 過載

過載單目運算子 單目運算子只有乙個運算元 如 a,b,i,j 等 因此過載函式只有乙個引數,如果過載函式為成員函式,還可以省約此引數。例 將 過載成友元函式。單目運算子一般過載為成員函式 include class complex void show complex operator complex...

第十一節,命名空間namespace

命名空間可以把不同的方法分散到不同的檔案去實現,如果你會objective c,他的作用和裡面的類目有異曲同工之妙。當然了也有很多不同的地方,首先要明白的是,命名空間並不是乙個類,你擴充套件他的方法並不是和類目一樣在擴充套件乙個類的方法。如果你學過net開發,獲取你會對這個命名空間有更好的理解。na...

第十一節std atomic原子操作

互斥量 多執行緒程式設計中保護共享資料 鎖,操作共享資料,開鎖 有兩個執行緒,對乙個變數進行操作,這個執行緒讀,另乙個執行緒往變數中寫值。int atomvalue 5 讀執行緒a int tmpvalue atomvalue atomvalue代表的是多個執行緒之間要共享的變數寫執行緒b atom...