ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ сначала ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс ΠΈ класс Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс описываСт ΠΎΠ²ΠΎΡ‰: съСдобСн Π»ΠΈ ΠΎΠ½ ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс 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.

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы