PHP物件導向特性

2021-07-15 14:44:20 字數 3016 閱讀 5471

1. 類的屬性(成員變數)

屬性宣告是由關鍵字 public,protected 或者 private 開頭,然後跟乙個普通的變數宣告來組成。其中public在物件中可以直接訪問,其他不可以。

屬性宣告

該類子類

public√×

protected√√

private√×

2. static靜態屬性

宣告類屬性或方法為靜態,就可以不例項化類而直接訪問。靜態屬性不能通過乙個類已例項化的物件來訪問(但靜態方法可以)。靜態方法或變數不能用thi訪問,需要用self來訪問。

class

a()

}echo a::$my_static;

echo a::static_func();

4.類常量

在類中可以定義乙個常量,定義的方法為const foo = 'foo'。在訪問乙個類中的常量是需要用到self關鍵字。

classa }

echo a::foo;

echo a::foo();

5.建構函式和析構函式

1> 具有建構函式的類每次在建立新的物件時會先呼叫該建構函式,用此函式可以完成物件的初始化操作。 如果子類中定義了建構函式則不會隱式呼叫其父類的建構函式。要執行父類的建構函式,需要在子類的建構函式中呼叫parent::__construct()。如果子類沒有定義建構函式則會如同乙個普通的類方法一樣從父類繼承(假如沒有被定義為private的話)。

note:與其它方法不同,當 __construct() 被與父類 __construct() 具有不同引數的方法覆蓋時,php 不會產生乙個 e_strict 錯誤資訊。

classa }

class

bextendsa }

$a = new a();

$b = new b();

2>析構函式會在到某個物件的所有引用都被刪除或者當物件被顯式銷毀時執行。析構函式即使在使用 exit() 終止指令碼執行時也會被呼叫。在析構函式中呼叫 exit() 將會中止其餘關閉操作的執行。

note:析構函式即使在使用 exit() 終止指令碼執行時也會被呼叫。在析構函式中呼叫 exit() 將會中止其餘關閉操作的執行。

6.抽象類

定義類的關鍵字abstract,定義為抽象的類不能被例項化。任何乙個類,如果它裡面至少有乙個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。被定義為抽象的方法只是宣告了其呼叫方式(引數),不能定義其具體的功能實現。繼承乙個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬鬆)。

6.介面類

定義類的關鍵字inte***ce,使用介面,可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。

note:類要實現介面,必須使用和介面中所定義的方法完全一致的方式。否則會導致致命錯誤。

7. 魔術方法

public void __set ( string $name , mixed $value )
public mixed __get ( string $name )
public mixed __call ( string $name , array

$arguments )

class

foo

}$foo = new foo();

echo

$foo;

class

foo

}$foo = new foo();

$foo(5);

class propertytest 

public function __get($name)

$trace = debug_backtrace();

trigger_error(

'undefined property via __get(): ' . $name .

' in ' . $trace[0]['file'] .

' on line ' . $trace[0]['line'],

e_user_notice);

return

null;

}/** php 5.1.0之後版本 */

public function __isset($name)

/** php 5.1.0之後版本 */

public function __unset($name)

/** 非魔術方法 */

public function gethidden()

}echo "\n";

$obj = new propertytest;

$obj->a = 1;

echo $obj->a . "\n\n";

var_dump(isset($obj->a));

unset($obj->a);

var_dump(isset($obj->a));

echo "\n";

echo $obj->declared . "\n\n";

echo "let's experiment with the private property named 'hidden':\n";

echo "privates are visible inside the class, so __get() not used...\n";

echo $obj->gethidden() . "\n";

echo "privates not visible outside of class, so __get() is used...\n";

echo $obj->hidden . "\n";

物件導向特性 php

1.類的字段呼叫格式 公用字段 類內呼叫 this 欄位名 類外呼叫 物件名 欄位名 靜態 類內呼叫 self 欄位名 類外呼叫 類名 欄位名 常量 類內呼叫 self 欄位名 類外呼叫 類名 欄位名 class computer public function get key public sta...

PHP物件導向特性 繼承

1 繼承 定義 繼承是從乙個基類得到乙個或多個類的機制。關鍵字 extends 注 php只支援單繼承,不支援方法過載。2 例子 class computer class notecomputer extends computer notecomputer new notecomputer echo...

PHP 物件導向的特性

物件導向的特性 一 物件導向有三大特性 封裝 繼承 多型。非常重要,第一要記住!二 封裝 封裝就是用來做類的,把乙個類封裝起來。做類不能隨便的做。我們做類不能隨便去寫乙個類,隨便寫乙個類之後,別人可以在外界,通過物件就可以直接呼叫我們裡面的成員,直接操作我們裡面的成員,這樣的話對於我們的類來講,如果...