PHP 手冊
上一頁 |  | 下一頁

# IX.Class/Object Functions

# 介紹

These functions allow you to obtain information about classes and instance objects. You can obtain the name of the class to which an object belongs, as well as its member properties and methods. Using these functions, you can find out not only the class membership of an object, but also its parentage (i.e. what class is the object class extending).

# 需求

建立這個延伸不需要任何外部程式庫。

# 安裝

這些函數是PHP核心的一部分，不需要安裝就可使用。

# 執行時期組態

`php.ini`中沒有定義此延伸的組態指令。

# 資源類型

這個延伸沒有定義任何資源。

# 預先定義常數

這個延伸沒有定義任何常數。

# 範例

In this example, we first define a base class and an extension of the class. The base class describes a general vegetable, whether it is edible or not and what is its color. The subclass Spinach adds a method to cook it and another to find out if it is cooked.

示範 1.classes.inc
`<?php // base class with member properties and methods class Vegetable { var $edible; var $color; function Vegetable($edible, $color="green") { $this->edible = $edible; $this->color = $color; } function is_edible() { return $this->edible; } function what_color() { return $this->color; } } // end of class Vegetable // extends the base class class Spinach extends Vegetable { var $cooked = false; function Spinach() { $this->Vegetable(true, "green"); } function cook_it() { $this->cooked = true; } function is_cooked() { return $this->cooked; } } // end of class Spinach ?>`

We then instantiate 2 objects from these classes and print out information about them, including their class parentage. We also define some utility functions, mainly to have a nice printout of the variables.

示範 2.test_script.php
`<pre> <?php include "classes.inc"; // utility functions function print_vars($obj) { $arr = get_object_vars($obj); while (list($prop, $val) = each($arr)) echo "\t$prop = $val\n"; } function print_methods($obj) { $arr = get_class_methods(get_class($obj)); foreach ($arr as $method) echo "\tfunction $method()\n"; } function class_parentage($obj, $class) { if (is_subclass_of($GLOBALS[$obj], $class)) { echo "Object $obj belongs to class " . get_class($$obj); echo " a subclass of $class\n"; } else { echo "Object $obj does not belong to a subclass of $class\n"; } } // instantiate 2 objects $veggie = new Vegetable(true, "blue"); $leafy = new Spinach(); // print out information about objects echo "veggie: CLASS " . get_class($veggie) . "\n"; echo "leafy: CLASS " . get_class($leafy); echo ", PARENT " . get_parent_class($leafy) . "\n"; // show veggie properties echo "\nveggie: Properties\n"; print_vars($veggie); // and leafy methods echo "\nleafy: Methods\n"; print_methods($leafy); echo "\nParentage:\n"; class_parentage("leafy", "Spinach"); class_parentage("leafy", "Vegetable"); ?> </pre>`
One important thing to note in the example above is that the object $leafy is an instance of the class Spinach which is a subclass of Vegetable, therefore the last part of the script above will output:
    [...]
    Parentage:
    Object leafy does not belong to a subclass of Spinach
    Object leafy belongs to class spinach a subclass of Vegetable

上一頁 | 最開頭 | 下一頁
variant_xor | 上一層 | call_user_method_array