Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ ΠΊΠ»Π°ΡΡ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ. ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠ²ΠΎΡ: ΡΡΠ΅Π΄ΠΎΠ±Π΅Π½ Π»ΠΈ ΠΎΠ½ ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°. ΠΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ Spinach Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ²ΠΎΡΠ° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π±ΡΠ» Π»ΠΈ ΠΎΠ½ ΡΠΆΠ΅ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²Π»Π΅Π½.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΠ²ΠΎΡ
<?php
class Vegetable {
public $edible;
public $color;
public function __construct($edible, $color = "green")
{
$this->edible = $edible;
$this->color = $color;
}
public function isEdible()
{
return $this->edible;
}
public function getColor()
{
return $this->color;
}
}
?>Π¨ΠΏΠΈΠ½Π°Ρ
<?php
class Spinach extends Vegetable {
public $cooked = false;
public function __construct()
{
parent::__construct(true, "green");
}
public function cook()
{
$this->cooked = true;
}
public function isCooked()
{
return $this->cooked;
}
}
?>Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½ΠΈΡ , Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ²ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΡΠΈΠ»ΠΈΡ, Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ #2 test_script.php
<?php
// Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²
spl_autoload_register();
function printProperties($obj)
{
foreach (get_object_vars($obj) as $prop => $val) {
echo "\t$prop = $val\n";
}
}
function printMethods($obj)
{
$arr = get_class_methods(get_class($obj));
foreach ($arr as $method) {
echo "\tΡΡΠ½ΠΊΡΠΈΡ $method()\n";
}
}
function objectBelongsTo($obj, $class)
{
if (is_subclass_of($obj, $class)) {
echo "ΠΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΡ " . get_class($obj);
echo ", ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ $class\n";
} else {
echo "ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ $class\n";
}
}
// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ 2 ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
$veggie = new Vegetable(true, "blue");
$leafy = new Spinach();
// Π²ΡΠ²ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ
echo "Π²Π΅Π³Π΅ΡΠ°ΡΠΈΠ°Π½ΡΠΊΠΈΠΉ: CLASS " . get_class($veggie) . "\n";
echo "Π»ΠΈΡΡΠΎΠ²ΠΎΠΉ: CLASS " . get_class($leafy);
echo ", PARENT " . get_parent_class($leafy) . "\n";
// ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π΅Π³Π΅ΡΠ°ΡΠΈΠ°Π½ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
echo "\nΠ²Π΅Π³Π΅ΡΠ°ΡΠΈΠ°Π½ΡΠΊΠΈΠΉ: Π‘Π²ΠΎΠΉΡΡΠ²Π°\n";
printProperties($veggie);
// ΠΈ Π»ΠΈΡΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
echo "\nleafy: ΠΠ΅ΡΠΎΠ΄Ρ\n";
printMethods($leafy);
echo "\nΠΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅:\n";
objectBelongsTo($leafy, Spinach::class);
objectBelongsTo($leafy, Vegetable::class);
?>Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
Π²Π΅Π³Π΅ΡΠ°ΡΠΈΠ°Π½ΡΠΊΠΈΠΉ: CLASS Vegetable
Π»ΠΈΡΡΠΎΠ²ΠΎΠΉ: CLASS Spinach, PARENT Vegetable
Π²Π΅Π³Π΅ΡΠ°ΡΠΈΠ°Π½ΡΠΊΠΈΠΉ: Π‘Π²ΠΎΠΉΡΡΠ²Π°
edible = 1
color = blue
Π»ΠΈΡΡΠΎΠ²ΠΎΠΉ: ΠΠ΅ΡΠΎΠ΄Ρ
function __construct()
function cook()
function isCooked()
function isEdible()
function getColor()
ΠΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅:
ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ Spinach
ΠΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΡ Spinach, ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Vegetable
ΠΠ°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ, Π² ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΎΠ±ΡΠ΅ΠΊΡ $leafy - ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Spinach, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ Vegetable.