抽象クラス
他のクラスが継承するためには、インスタンス化することはできません。使用抽象(抽象)。抽象メソッドは、抽象クラスは、抽象メソッドを持っていない可能性があり、抽象クラスでなければなりません。
インターフェイスインターフェイスは、特別な抽象クラスです。
例えば:
<?PHP // 抽象クラス 抽象 クラス人{ 関数RUN(){ エコー "..................とruningて" ; } 抽象 関数スタート(); } クラス男の子延び人{ 関数スタート(){ エコー「サブクラス方法スタート" ; } } $ = 新新)(ボーイズに; $ - > RUN(); // 書き込みインターフェース インターフェース学生{ 関数名(); 機能研究(); } クラス STUの実装の学生{ 関数名(){ エコー「姓名」。 } 関数の研究(){ エコー "学习" 。 } } $ Bの = 新しいSTU()。 B $ > - ;研究() ================================================== ================
マジック)(__cloneをクローン化しました。
<?PHP // 对象克隆和魔术方法__clone クラス人{ VARの $名; VaRの $の年齢; VaRの $カウント = 0 ; 関数 __construct($名、$歳){ $この - >名前= $名; この$ >年齢= - $年齢を。 } 関数__clone(){ $この - > カウント + = 1 ; } 関数の実行(){ エコー $この - >名前".................. runingて"。; } } $ A = 新しい新しい人( "ボブ"、23がある); $ A - > RUN(); エコー $ A - > COUNT ; $ B = クローン $ A ; // クローン $ B - > RUN(); エコー $ B - > COUNT ; $ C = 新しい新しい人( "花"、22がある); エコー $ C - > COUNT ; $ D = クローン $ B ; エコー $ D - > COUNT ;
マジックメソッド__get()__set()
<?PHP クラス人{ プライベート $名; プライベート $年齢; 関数 __set($名、$値){ $この - > $名 = $値を、 } 関数 __get($名){ 返す $この - > $名; } } $ = 新しい人(); $ = "小明">名前を- 。 エコー $ - >名前;
マジックメソッド__call()、__のtoString()
<?PHP // __call()、__のtoString() クラスは、人{ 関数 __call($名、$ V ){ エコー "呼び出すメソッド" $名 "は存在しません。" ; } 関数__toString(){ リターン「I人のクラス情報" ; } } $ = 新しい新しい人(); $ - > RUN(); $ - > STOP(); エコー $ ;
魔法の他の方法:
__construct()、クラスコンストラクタ
__destruct()、デストラクタクラス
対象における非アクセスメソッド呼び出し時に呼び出さ__call()、
静的モードによって非アクセスメソッドを呼び出すときに呼び出さ__callStatic()、
__get()は、クラスのメンバ変数取得するときに呼び出され
たクラスのメンバ変数を設定するとき__set()と呼ばれ、
アクセスできなく性質上ISSETを呼び出したときに呼び出され__issetを()、()、または空()
アクセスできないプロパティに設定しないと呼ばれる__unset()、これは、呼び出されたときに()。
__sleep()、シリアライズの実装()、最初はこの関数呼び出しう
__wakeup()、実施アンシリアライズ()、最初は、この関数を呼び出す
(__toString)場合、文字列、クラスは、応答方法としてある
__invoke()、関数呼び出し応答する方法は、オブジェクトのメソッドを呼び出すとき
__set_state()、派生クラスは、この静的メソッドが呼び出されるコールでvar_export()。
__clone()、オブジェクトのコピーが完了したときに呼び出さ
)(__autoload、未定義のクラスをロードしようとする試み
に必要な__debugInfoを()、印刷デバッグ情報