簡介:這是php學習筆記------[php物件導向中常用關鍵字與魔術方法]的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。
class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=338759' scrolling='no'>
<?php/* * PHP中常用的關鍵字 * * final * 1. final不能修飾成員屬性(類中的常量不是用這個關鍵在) * * 2. final只能修飾類和方法 * * 作用: * 使用final修飾的類不能被子類繼承 * * 使用final修飾的方法不能被子類去覆蓋 * * 用來限制類不被繼承,方法不被覆蓋 * * static * 1.使用static可以修飾成員屬性和成員方法,不能修飾 * * 2.用static修飾的成員屬性,可以被同一個類的所有對象共用 * * 3.靜態資料是存在記憶體中的資料區段(初始化靜態段) * * 4.靜態資料是在類被第一次載入時 分配到記憶體中的,以後在用到類時直接從資料區段中擷取 * * 5.什麼是類被載入?只要在程式中使用到這個類(有這類名出現) * * 注意:靜態成員都要使用類名去訪問,不用建立對象,不用對象去訪問 * 類名::靜態成員 * * 如果在類中使用靜態成員,可以使用self代表本類類名 * self::靜態成員 * * 6.靜態方法(static修飾),不能訪問非靜態成員 *因為非靜態成員,必須用對象來訪問,而訪問內部成員使用的是$this *靜態方法不能使用對象來調用,也就沒有對象,$this也就不能代表什麼對象,非靜態成員還必須使用對象 *如果確定一個方法中不使用非靜態成員,則可以聲明為靜態方法 * * * * * const * * 1.只能修飾成員屬性 * * 2.普通聲明常量:define('常量名','testesttest'); * * 3.在類中聲明常量使用const * * 4.命名的方式和define是一樣的效果 * * 5.訪問方式和static靜態成員屬性時一樣的(在類外部使用 類名::常量,在類內部使用 self::常量) * * 6.常量一定要在聲明時就給初值 * * * PHP中常用的魔術方法 * * __call() * * 作用:在調用對象中不存在的方法時就會出現錯誤,然後程式退出。 * * 什麼時候調用:就會在調用一個對象中不存在的方法時自動調用 * * 這個方法需要兩個參數 * * __toString() * *直接輸出對象引用時自動調用,用來快速擷取對象的字串表示的最便捷的方式 * * * 對象序列化(序列化):將一個對象轉為二進位串 * 1.將對象長時間儲存在資料庫或檔案中時使用 * 2.將對象在多個PHP檔案中傳輸時 * serialize():參數是一個對象,返回來的就是串化後的二進位串 * unserialize:參數就是對象的二進位串,返回來就是新產生的對象 * * __sleep() * 是在序列化時自動調用的方法 * * 作用:可以將一個對象部分序列化(序列化) * 只要這個方法中返回一個數組,數組中有幾個成員屬性 * * __wakeup() * 是在還原序列化自動調用的方法 * * 是對象重新誕生的一個過程(__construct(),__clone(),__wakeup()) * * * __autoload() *注意:其他的魔術方法都是在類中添加起作用,這是唯一一個不在類中添加的方法 *只要在頁面中使用到一個類,只要用到類名就會自動將類名傳給這個參數 * * * __clone() * 複製對象使用__clone去複製 * * 原本(原來的對象) * * 副本(複製出來的對象 * * __clone()就是在複製對象時自動調用的方法 * * 作用: * * 只要一個對象一誕生,就要有初始化的動作,和構造方法作用相似 * 在__clone()方法中的$this關鍵字,代表的是副本的對象,$that代表原本的對象 * * * * * */class Person{var $name;var $age;var $sex;const HOST="localhost";//類中聲明常量var static $country="China";//使用static,靜態成員屬性function __construct($name,$age,$sex){$this->name=$name;$this->age=$age;$this->sex=$sex;echo "###############";}//靜態方法static function test(){echo "test test test <br>";}function __call($methodName,$args){echo "調用的方法{$methodName}(參數:";print_r($args);echo ")不存在";}function __toString(){return "{$this->name}1111111111122222<br>";}//複製對象時自動調用function __clone(){$this->name="副本";}//此方法不能被覆蓋final public function say(){echo "我的名字:{$this->name},我的年齡{$this->age}:,我的性別:{$this->sex}<br/>";}protected function eat(){echo "wwwwwwwwwwwwwwwwwwwww<br>";}function run(){echo self::HOST;//類內部訪問常量}protected $nameprotected $age;protected $sex;}class Student extends Person{var $school;function __construct($name,$age,$sex,$school){parent::__construct();$this->school=$school;}protected function say(){parent::say();echo "我所在的學校{$this->school}<br/>";}function study(){echo "{$this->name}在學習<br/>";}}echo Person::$country;//訪問靜態成員echo Person::HOST;//外部存取常量$p=new Person();echo $p;//會自動調用__toString()$p1=clone $p;//複製//__autoload使用function __autoload($className){//每次使用類名都會調用此函數,並把類名傳給參數include "./".$className.".class.php";}?>
愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具
http://biancheng.dnbcw.info/php/338759.html pageNo:8