概è¦
以下ã®é–¢æ•°ã«ã‚ˆã‚Šã€ã‚¯ãƒ©ã‚¹ã‚„インスタンスオブジェクトã«é–¢ã™ã‚‹æƒ…å ±ã‚’
å¾—ã‚‹ã“ã¨ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚オブジェクトãŒå±žã™ã‚‹ã‚¯ãƒ©ã‚¹ã®åå‰ã€ãã®
メンãƒãƒ¼ãƒ—ãƒãƒ‘ティã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å–å¾—å¯èƒ½ã§ã™ã€‚
ã“ã®é–¢æ•°ã‚’使用ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚ªãƒ–ジェクトã®ã‚¯ãƒ©ã‚¹ãƒ¡ãƒ³ãƒãƒ¼ã ã‘ã§
ãªã親クラス(ã™ãªã‚ã¡ãã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚¯ãƒ©ã‚¹ã®æ´¾ç”Ÿå…ƒ)ã®æƒ…å ±ã‚’å¾—ã‚‹
ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚
使用例
ã“ã®ä¾‹ã§ã¯ã€ã¾ãšåŸºåº•クラスãŠã‚ˆã³ãã®ã‚¯ãƒ©ã‚¹ã®æ´¾ç”Ÿã‚¯ãƒ©ã‚¹ã‚’定義ã—ã¾
ã™ã€‚基底クラスã¯é£Ÿç”¨ã‹å¦ã‹ã€è‰²ã¨ã‹ã„ã£ãŸã€ä¸€èˆ¬çš„ãªé‡Žèœã‚’記述ã—ã¾
ã™ã€‚サブクラスspinachã¯ãã®é‡Žèœã®æ–™ç†æ³•ã¨èª¿ç†
済ã§ã‚ã‚‹ã‹ã©ã†ã‹ã®æƒ…å ±ã‚’è¿½åŠ ã—ã¾ã™ã€‚
例 1classes.inc <?php
// メンãƒãƒ¼ãƒ—ãƒãƒ‘ティã¨ãƒ¡ã‚½ãƒƒãƒ‰ã‚’有ã™ã‚‹åŸºåº•クラス
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;
}
} // クラスVegetableã®çµ‚り
// 基底クラスを拡張ã™ã‚‹
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;
}
} // クラスSpinachã®çµ‚り
?> |
|
ç¶šã„ã¦ã€ã“れらã®ã‚¯ãƒ©ã‚¹ã‹ã‚‰äºŒã¤ã®ã‚ªãƒ–ジェクトã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã€
親クラスをå«ã‚€æƒ…å ±ã‚’å‡ºåŠ›ã—ã¾ã™ã€‚
ã¾ãŸã€ã„ãã¤ã‹ã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£é–¢æ•°ã‚’定義ã—ã¾ã™ã€‚ã“れらã¯ä¸»ã«å¤‰æ•°
ã‚’æ ¼å¥½è‰¯ã表示ã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã™ã€‚
例 2test_script.php <pre>
<?php
include "classes.inc";
// ユーティリティ関数
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) {
global $$obj;
if (is_subclass_of($$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";
}
}
// 二ã¤ã®ã‚ªãƒ–ジェクトã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
$veggie = new Vegetable(true,"blue");
$leafy = new Spinach();
// オブジェクトã«é–¢ã™ã‚‹æƒ…å ±ã‚’å‡ºåŠ›
echo "veggie: CLASS ".get_class($veggie)."\n";
echo "leafy: CLASS ".get_class($leafy);
echo " PARENT ".get_parent_class($leafy)."\n";
// veggieã®ãƒ—ãƒãƒ‘ティを表示
echo "\nveggie: プãƒãƒ‘ティ\n";
print_vars($veggie);
// ãã—ã¦leafyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’表示
echo "\nleafy: メソッド\n";
print_methods($leafy);
echo "\nParentage:\n";
class_parentage("leafy", "Spinach");
class_parentage("leafy", "Vegetable");
?>
</pre> |
|
注æ„ã™ã¹ã大事ãªç‚¹ã§ã™ãŒã€ä¸Šè¨˜ã®ä¾‹ã§ã¯ã‚ªãƒ–ジェクト
$leafyã¯
Vegetableã®ã‚µãƒ–クラスã§ã‚るクラス
Spinachã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚りã€
ã“ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã®æœ€å¾Œã®éƒ¨åˆ†ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªå‡ºåŠ›ã¨ãªã‚Šã¾ã™ã€‚