PHP中常用的關鍵字
* final
* 1. final不成修飾成員屬性(類中常不是用這個關鍵字)
* 2. final只能修飾類和方法
* 作用:
* 使用final修飾的類 不 能被子類繼承
* 使用final修飾的方法不能被子類去覆蓋
*
* 用來限制類不被繼承,方法不被覆蓋就使用fianl
* static
* 1. 使用static可以修飾成員屬性和成員方法,不能修飾類
* 2. 用static修飾的成員屬性,可以被同一個類的所有對象共享
*3. 靜態的數據是存在 內存中的 數據段中(初使化靜態段)
*4. 靜態的數據是在類每一次加載時 分配到內存中的, 以后再用到類時就直接從數據段中獲取
*5. 什么是類被加載? 只要在程序中使用到這個類(有這個類名出現)
*
*注意: 靜態的成員都要使用類名去訪問,不用創建對象, 不用對象去訪問
*
類名::靜態成員
*如果在類中使用靜態成員, 可以使用 self代表本類($this)
*6. 靜態方法(static修飾的方法), 不能訪問非靜態的成員(在非靜態的方法中,可以訪問靜態成員)
*
因為非靜態的成員, 就必須用對象來訪問,訪問內部的成員使用的就是$this
靜態方法 不用使用對象來調用, 也就沒有對象, $this也就不能代表什么對象, 非靜態的成員還必須使用對象
如果你確定一個方法不使用非靜態的成員, 則可以將這個方法聲明為 靜態方法(不能創建對象,直接使用類名就可以訪問)
靜態成員: 類名::成員 , 在類內部訪問其它成員 self::成員
const
* 1. 他只能修飾成員屬性
*define(‘HOST’, ‘www.xsphp.com’);
*final int A=10;
*2. 類中聲明常量屬性使用const
*3. 命名的方式和我們以前學習 define是一樣的效果
*4. 訪問方式和static靜態成員屬性是一樣(在類外部使用 類名::常量, 在類內部使用 self::常量)
*5. 常量一定要在聲明時就給初值
*$this self parent ….
PHP中常用的魔術方法
*__call()
*作用: 在調用對象中不存在的方法時就會出現系統報錯,然后程序退出。
*什么時候自動調用: 就會在調用一個對象中不存的的方法時自動調用
*處理一些不存在方法的錯誤調用
*這個方法需要兩個參數
*__toString()
*直接輸出對象引用時自動調用, 用來快速獲取對象的字符串表示的最便捷的方式
__clone()
*克隆對象使用clone去處理
*原本 (原來的對象)
*復本 (復制出來的對象)
* __clone()就是在克隆對象時自動調用的方法
* 只要一個對象一誕生,就要有初使化的動作, 和構造方法__construct作用相似
* 在__clone()方法中的 $this關鍵字,代表的是復本, $that代表原本對象
*__autoload()
*注意: 其它的魔術方法都是在類中添加起作用, 這是一個唯一一個不在類中添加的方法
*只要在頁面中使用到一個類,只要用到類名就會自動將類名傳給這個參數
* 對象串行化(序列化): 將一個對象轉為二進制串 (對象是存儲在內存)
* 1. 將對象長時間存儲在數據庫或文件中時
* 2. 將對象在多個PHP文件中傳輸時
*serialize() : 參數是一個對象, 返回來的就是串行化后的二進制串
*unserialize() : 參數就是對象的二進制串, 返回來的就是新生成的對象
* *__sleep()
* 是在序列化時自動調用的方法
*作用:就是可以將一個對象部分串行化
*只要這個方法中返回一個數組,數組中有幾個成員屬性就序列化幾個成員屬性,如果不加這個方法,則所有成員都被序列化
*__wakeup()
*是在反序列化時自動調用的方法
*也是對象重新誕生的一個過程(__construct(), __clone(),__wakeup())
class Person {
var $name;
protected $age;
protected $sex;
static $country="中國";
const HOST="localhost";
function __construct($name, $age, $sex){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
echo "###################<br>";
}
function getCountry(){
return self::$country;
}
function setCountry($country){
self::$country=$country;
}
function say(){
echo "我的名-{$this->name}:,我的年齡:{$this->age},我的性別:{$this->sex}.<br>";
}
function eat(){
echo "wwwwwwwwwwwwwwww";
}
function __call($methodName, $args){
echo "你調用的方法{$methodName}(參數:";
print_r($args);
echo ")不存在<br>";
}
static function hello(){
echo "{$this->name} @@@@@@@@@@@@@@<br>";
}
function run(){
echo self::HOST;
}
function __toString(){
return "{$this->name}1234567898765432123567898765432";
}
function __clone(){
$this->name="復本 張三";
$this->age=0;
}
function __sleep(){
return array("name", "age");
}
function __wakeup(){
$this->name="sanzhang";
$this->age=$this->age+1;
}
function __destruct(){
echo $this->name."<br>";
}
}
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。