首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 5 存取屬性與方法:-> 運算子、動態呼叫與 Factory 模式

     編輯:PHP 綜合知識

PHP 5 物件成員存取完整指南

屬性存取

物件實例屬性即變數,但必須用 -> 運算子存取,屬性名不需加 $ 符號。
可串連 ->:若屬性包含物件,可用多個 -> 存取內部物件屬性。甚至可在雙引號字串中嵌入這些運算式。

範例:House 包含 Room 陣列

<?php
class Room {
    public $name;
    function __construct($name="unnamed") { $this->name = $name; }
}

class House {
    public $room = array();
}

$home = new House();
$home->room[] = new Room("bedroom");
$home->room[] = new Room("kitchen");
$home->room[] = new Room("bathroom");

print($home->room[0]->name); // 輸出 bedroom
?>

方法存取

用 -> 呼叫實例方法,執行方式與一般函數幾乎相同。繼承而來的屬性與方法在子類別同樣有效,存取方式相同。

父類別與當前類別命名空間

PHP 有兩個特殊命名空間:parent 指向父類別,self 指向當前類別。範例展示 parent::__construct() 呼叫父建構函數,self::bark() 在建構函數中呼叫自身方法。

<?php
class Animal {
    public $blood, $name;
    public function __construct($blood, $name=NULL) {
        $this->blood = $blood;
        if($name) $this->name = $name;
    }
}

class Mammal extends Animal {
    public $furColor, $legs;
    function __construct($furColor, $legs, $name=NULL) {
        parent::__construct("warm", $name);
        $this->furColor = $furColor;
        $this->legs = $legs;
    }
}

class Dog extends Mammal {
    function __construct($furColor, $name) {
        parent::__construct($furColor, 4, $name);
        self::bark();
    }
    function bark() { print("$this->name says 'woof!'"); }
}

$d = new Dog("Black and Tan", "Angus");
?>

動態成員存取

  • 執行期決定屬性名:$this->$property
  • 執行期決定方法名:$obj->$method()
  • 方法鏈呼叫:$obj->getObject()->callMethod(),避免中間變數,有助實現 Factory 等設計模式(PHP 舊版不允許)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved