Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠšΡƒΡ€Ρ "Π―Π·Ρ‹ΠΊ программирования PHP"Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 20

Автор Нина БавСльСва

$new_lang;

}

function show_name(){

echo ("Π― программист, " .

$this->first_name . " " .

$this->last_name . "!<br>");

}

function say_hello(){

echo "ΠŸΡ€ΠΈΠ²Π΅Ρ‚!<br>";

}

}

Programmer::say_hello();

// Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π½ΠΈ

// ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΅Π΅ класса Π΅Ρ‰Π΅ Π½Π΅ создан

$new_progr = new Programmer("Вася","Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²");

$new_progr->set_lang("PHP");

?>


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:


ΠŸΡ€ΠΈΠ²Π΅Ρ‚!

МСня Π·ΠΎΠ²ΡƒΡ‚ Вася Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²!

И я знаю Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Ρ‰Π΅ ΠΈ PHP


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Programmer::say_hello(); ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ say_hello класса Programmer ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΡƒΡŽ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄, примСняСмый ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса Π½Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π΄ΠΎ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ класса ΠΈ конструкциСй this, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.


Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ класса Programmer ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ show_name(), поэтому Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ show_name() ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Person ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«::Β» Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Π²Π½ΡƒΡ‚Ρ€ΠΈ опрСдСлСния класса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ $this, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ класс Π½Π΅ пСрСопрСдСляСт эти свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ parent


Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу, ΠΌΡ‹ использовали Π΅Π³ΠΎ имя (ΠΌΡ‹ писали Person::show_name()). Π­Ρ‚ΠΎ Π½Π΅ совсСм ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ имя класса ΠΈΠ»ΠΈ иСрархия классов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° придСтся ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ описаний всСх классов с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π½ΠΈΡ… ΠΈΠΌΠ΅Π½Π° Π² соотвСтствиС с Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации, вмСсто ΠΈΠΌΠ΅Π½ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово parent (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, parent::show_name()). Parent ссылаСтся Π½Π° класс, прописанный послС extends Π² объявлСнии вашСго класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Π΄Ρ€ΡƒΠ³ иСрархия классов измСнится, Ρ‚ΠΎ достаточно Π±ΡƒΠ΄Π΅Ρ‚ внСсти измСнСния Π² ΠΈΠΌΠ΅Π½Π°, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ послС extends Π² описаниях классов.


ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль PHP5


ΠšΡ€ΠΎΠΌΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ названия для конструкторов ΠΈ появлСния дСструкторов Π² PHP5 ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π΅Ρ‰Π΅ достаточно ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ опишСм Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ…. ОсновноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ – это ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² класса ΠΏΠΎ ссылкС ΠΈ присвоСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ссылкС, Π° Π½Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π² PHP4. Π’ PHP5 Ссли ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π΄Π²Π΅ Ρ€Π°Π²Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ (ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ строкового Ρ‚ΠΈΠΏΠ°). Π’ связи с этим появился Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для создания ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² – Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’ PHP4 всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса доступны ΠΈΠ·Π²Π½Π΅, Ρ‚.Π΅. ΠΎΠ½ΠΈ всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ. Π’ PHP5 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ (доступными ΠΎΡ‚ΠΎΠ²ΡΡŽΠ΄Ρƒ), Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ (доступными Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса) ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ (доступными Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΈ Π² Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классах). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ интСрфСйсы ΠΈ абстрактныС классы ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π² PHP5 Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π° для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ соотвСтствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ программирования.


РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ


Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΠΎ Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ для Π²Π²ΠΎΠ΄Π° описания ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² эту Ρ„ΠΎΡ€ΠΌΡƒ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Для Π½Π°Ρ‡Π°Π»Π° создадим Ρ„ΠΎΡ€ΠΌΡƒ, Π³Π΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, – описаниС ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° (Ρ‚ΠΎΡ‡Π½Π΅Π΅, это Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹):


<form action="task1.php">

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ описаниС ΡΡ‚Π°Ρ‚ΡŒΠΈ: <input type=submit

name=art_create

value="Create Article">

</form>

<form action="task1.php">

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ описаниС личности: <input

type=submit name=pers_create

value="Create Person">

</form>


Π’Π΅ΠΏΠ΅Ρ€ΡŒ напишСм Ρ„Π°ΠΉΠ» для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих Ρ„ΠΎΡ€ΠΌ. Π’ Π½Π΅ΠΌ создадим Π΄Π²Π° класса – ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ личности. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса имССтся ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для отобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, встроСнныС Π² PHP для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с классами ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π­Ρ‚ΠΎ функция get_class(ΠΎΠ±ΡŠΠ΅ΠΊΡ‚), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ имя класса, экзСмпляром ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π΅ΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. И функция get_class_vars(имя класса), которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив всСх свойств класса ΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Аналогично ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массив ΠΈΠΌΠ΅Π½ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса: get_class_methods (имя класса)


Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅


Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ основныС понятия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² языкС PHP. Π‘Ρ‹Π»ΠΈ описаны ΠΏΡ€Π°Π²ΠΈΠ»Π° создания классов ΠΈ ΠΈΡ… прСдставитСлСй-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², способы задания Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса, способы получСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств ΠΈ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² классов.

Π Π°Π±ΠΎΡ‚Π° с массивами Π΄Π°Π½Π½Ρ‹Ρ…


Π―Π·Ρ‹ΠΊ PHP прСдоставляСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π·Π°Π΄Π°Ρ‡ΠΈ, связанныС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ массивов. Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅ΡˆΠΈΠΌ нСсколько ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’ частности, Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для поиска элСмСнтов Π² массивС, для сортировки элСмСнтов массива, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ созданных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠΎ всСм элСмСнтам массива ΠΈ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° массива Π½Π° подмассивы.


ΠœΠ°ΡΡΠΈΠ²Ρ‹


Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΌΡ‹ рассказывали ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π΄Π°Π½Π½Ρ‹Ρ…. Напомним, Ρ‡Ρ‚ΠΎ массив ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ двумя способами:


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции array


$array_name = array("key1"=>"value1",

"key2"=>"value2");


-


НСпосрСдствСнно задавая значСния элСмСнтам массива


$array_name["key1"] = value1;


-


НапримСр, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ список Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ЕстСствСнно Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ массива, ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€), Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ – Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎΡ‚ массив ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


<?

$del_items = array("10"=>"Наука ΠΈ Тизнь",

"12"=>"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°");

$del_items["13"] = "ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Php";

// добавляСм элСмСнт Π² массив

?>



ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами


Массив – это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ этого Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. КакиС ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ с массивами? ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ.


Π‘ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ массивы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«+Β». Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ массивам Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ объСдинСниСм. Если Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° массива, $a ΠΈ $b, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΈΡ… слоТСния (объСдинСния) Π±ΡƒΠ΄Π΅Ρ‚ массив $c, состоящий ΠΈΠ· элСмСнтов $a, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ справа дописаны элСмСнты массива $b. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Ссли Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ массив Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ элСмСнт ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива, Ρ‚.Π΅. ΠΈΠ· $a. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ массивы Π² языкС PHP, ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Ρ‹ мСст слагаСмых сумма мСняСтся.


<?

$a = array("ΠΈ"=>"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°",

"ΠΌ"=>"ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°");

$b = array("ΠΈ"=>"Π˜ΡΡ‚ΠΎΡ€ΠΈΡ","ΠΌ"=>"Биология",

"Ρ„"=>"Π€ΠΈΠ·ΠΈΠΊΠ°");

$c = $a + $b;

$d = $b +$a;

print_r($c);

/* ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ: Array([ΠΈ]=>Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°

[ΠΌ]=>ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° [Ρ„]=>Π€ΠΈΠ·ΠΈΠΊΠ°) */

print_r($d);

/* ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ: Array([ΠΈ]=>Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

[ΠΌ]=>Биология [Ρ„]=>Π€ΠΈΠ·ΠΈΠΊΠ°) */

?>



Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ массивы ΠΌΠΎΠΆΠ½ΠΎ, провСряя ΠΈΡ… равСнство ΠΈΠ»ΠΈ нСравСнство Π»ΠΈΠ±ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ. РавСнство массивов – это ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ всС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов массивов. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ – ΠΊΠΎΠ³Π΄Π° ΠΊΡ€ΠΎΠΌΠ΅ равСнства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ элСмСнтов трСбуСтся Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ элСмСнты Π² ΠΎΠ±ΠΎΠΈΡ… массивах Π±Ρ‹Π»ΠΈ записаны Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС. РавСнство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² PHP обозначаСтся символом Β«==Β», Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ – символом Β«===Β».


<?

$a = array("ΠΈ"=>"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°",

"ΠΌ"=>"ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°");

$b = array("ΠΌ"=>"ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°",

"ΠΈ"=>"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°");

if ($a == $b) echo "ΠœΠ°ΡΡΠΈΠ²Ρ‹ Ρ€Π°Π²Π½Ρ‹ ΠΈ";

else echo "ΠœΠ°ΡΡΠΈΠ²Ρ‹ НЕ Ρ€Π°Π²Π½Ρ‹ ΠΈ ";

if ($a === $b) echo " эквивалСнтны";

else echo " НЕ эквивалСнтны";

// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ echo "ΠœΠ°ΡΡΠΈΠ²Ρ‹ Ρ€Π°Π²Π½Ρ‹ ΠΈ

НЕ эквивалСнтны"

?>



Π”Π°Π»Π΅Π΅ рассмотрим Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²Π°ΠΆΠ½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с массивом – подсчСт количСства Π΅Π³ΠΎ элСмСнтов. Для Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² PHP Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция.


Ѐункция count


НС Ρ€Π°Π· ΡƒΠΆΠ΅ ΠΌΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ count(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство элСмСнтов массива. На самом Π΄Π΅Π»Π΅ эта функция вычисляСт число элСмСнтов Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅. Если ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ 1. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ составляСт пСрСмСнная Ρ‚ΠΈΠΏΠ° NULL – count(NULL) Π΅ΡΡ‚ΡŒ 0. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, примСняя эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ число Π΅Π³ΠΎ элСмСнтов, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ COUNT_RECURSIVE.