首頁 >後端開發 >php教程 >php基礎:類別與物件(1)_PHP教程

php基礎:類別與物件(1)_PHP教程

WBOY
WBOY原創
2016-07-21 15:59:13805瀏覽

類別的定義:
   以關鍵字 class 開頭,後面跟著類別名稱,可以是任何非 PHP 保留字的名字。後面跟著一對花括號,裡麵包含有類別成員和方法的定義。

偽變數$this
可以在當一個方法在物件內部呼叫時使用。 $this 是一個到呼叫對象(通常是方法所屬於的對象,但也可以是另一個對象,如果該方法是從第二個對象內靜態調用的話)的引用。
//??靜態呼叫的內部到底是怎樣的?
看個例子:
class A
{
   function foo( )
   {
       if (isset($this)) {
          >           echo ")n";
       } else {
           echo "$this is not defined.n";
    unction bar()
   {
       A::foo();
   }
}
$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();

輸出結果為:

$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.

/*我希望知道這個例子的內存等的具體實現,我暫時無法理解。如果有人可以講清楚,可以告訴我。我們宿舍牛頭現在正在冬眠,等他醒來,我會問。 */

new

要建立一個物件的實例,必須建立一個新物件並將其賦給一個變數。當建立新物件時該物件總是被賦值,除非該物件定義了建構函式並且在出錯時拋出了一個異常。
當把一個物件已經建立的實例賦給一個新變數時,新變數會存取同一個實例,就和用該物件賦值一樣。此行為和傳遞給函數進入實例時一樣。可以用克隆給一個已建立的物件建立一個新實例。
(這幾句話雖然很短,但是未必容易理解。)

例子如下:
class SimpleClass
{
   //成員聲明   public $var = 'a default value';


   // 方法宣告
   public function displayVar() {
        echo $this->var;
       )

/看下面的圖.1>new 在heap(堆)中實例化一個物件。 2>將指標$instance指向他

$instance = new SimpleClass();
//3>將指標$assigned指向heap中的實例化物件

$ assigned   =  $instance;
//4>將$instance的引用(地址)賦值給$reference
$reference  =& $instance;
$ instance->var = '$assigned will have this value';
$instance = null;
// 5>間斷$instance與heap中實例的連接。
var_dump($instance);var_dump($reference);
var_dump($assigned);
輸出:
N
輸出:

NULLobject(SimpleClass)#1 (1) {
  ["var"]=>
    string(30) "$assigned will have this value"
}

圖示整個過程:



類別繼承extends
一個類別可以在宣告中用extends 關鍵字繼承另一個類別的方法和成員。不能擴展多個類,只能繼承一個基類。

php基礎:類別與物件(1)_PHP教程被繼承的方法和成員可以透過用相同的名字重新宣告被覆寫,除非在父類別定義方法時使用了 final 關鍵字。可以透過 parent:: 來存取被覆蓋的方法或成員。

(繼承的機製到底怎樣的?)
原始碼如下:

class ExtendClass extends SimpleClass

{   // Redefine the parent method >   function displayVar()   {       echo "Extending classn";      🎜> $extended->displayVar();

輸出:
Extending class
a default value



www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/317411.htmlTechArticle類別的定義: 以關鍵字class 開頭,後面跟著類別名,可以是任何非PHP 保留字的名字。後面跟著一對花括號,裡麵包含有類別成員和方法的定義。 ...

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn