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

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

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

<?

$a = 3; $b = 2;

function & ref($par){

global $a, $b;

if ($par % 2 == 0) return $b;

else return $a;

}

$var =& ref(4);

echo $var, " ΠΈ ", $b, "<br>";

//Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ 2 ΠΈ 2

$b = 10;

echo $var, " ΠΈ ", $b, "<br>";

// Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ 10 ΠΈ 10

?>


ΠŸΡ€ΠΈ использовании синтаксиса ссылок Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $var нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π΅ копируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $b Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ $ref, Π° создаСтся ссылка Π½Π° эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $var ΠΈ $b ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.


ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ


PHP ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ссли имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ заканчиваСтся ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками, Ρ‚ΠΎ PHP ΠΈΡ‰Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ пытаСтся Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ.


<?

/* создадим Π΄Π²Π΅ простыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Add_sign – добавляСт подпись ΠΊ строкС ΠΈ

Show_text – Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку тСкста */

function Add_sign($string,

$sign="Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠŸΠ΅Ρ‚Ρ€"){

echo $string ." ".$sign;

}

function Show_text(){

echo "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅<br>";

}

$func = "Show_text";

// создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ,

// Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Show_text

$func();

// это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Show_text

$func = "Add_sign";

// создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ,

// Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Add_sign

$func("ΠŸΡ€ΠΈΠ²Π΅Ρ‚ всСм <br>");

// это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

// Add_sign с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ "ΠŸΡ€ΠΈΠ²Π΅Ρ‚ всСм"

?>


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ функция Show_text просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку тСкста. Казалось Π±Ρ‹, Π·Π°Ρ‡Π΅ΠΌ для этого ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ссли сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция echo(). Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ echo(), print(), unset(), include() ΠΈ Ρ‚.ΠΏ. нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΌΡ‹ напишСм:


<?

$func = "echo ";

$func("TEXT");

?>


Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:


Fatal error: Call to undefined function:

echo() in

c:\users\nina\tasks\func\var_f.php on line 2


ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· пСрСчислСнных Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ сдСлали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.


Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ (встроСнныС) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ


Говоря ΠΎ функциях, опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, всС ΠΆΠ΅ нСльзя Π½Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ слов ΠΎ встроСнных функциях. Π‘ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ· встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ echo(), print(), date(), include(), ΠΌΡ‹ ΡƒΠΆΠ΅ познакомились. На самом Π΄Π΅Π»Π΅ всС пСрСчислСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ date(), ΡΠ²Π»ΡΡŽΡ‚ΡΡ языковыми конструкциями. Они входят Π² ядро PHP ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… настроСк ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Ѐункция date() Ρ‚ΠΎΠΆΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ядра PHP ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ настроСк. Но Π΅ΡΡ‚ΡŒ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. НапримСр, для использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… MySql слСдуСт ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PHP с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ этого Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Π’ послСднСС врСмя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ соотвСтствСнно ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² состав PHP Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ… Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… настроСк ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.


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


Напомним, Π² Ρ‡Π΅ΠΌ состоит Π·Π°Π΄Π°Ρ‡Π°. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволял Π±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ html-Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ элСмСнты ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ количСствС Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Π΅Ρ‚ ΠΈΠΌ названия, Π° наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сама Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.


РазобьСм Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° нСсколько ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡: Π²Ρ‹Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² элСмСнтов Π²Π²ΠΎΠ΄Π° ΠΈ ΠΈΡ… количСства, созданиС Π½Π°Π·Π²Π°Π½ΠΈΠΉ элСмСнтов Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚.Π΅. нСпосрСдствСнно гСнСрация Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΠ΅Ρ€Π²Π°Ρ Π·Π°Π΄Π°Ρ‡Π° достаточно проста: Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ (task_form.html):


<form action="ask_names.php">

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ элСмСнт "строка Π²Π²ΠΎΠ΄Π° тСкста": <input

type=checkbox name=types[]

value=string><br>

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов: <input type=text

name=numbers[string]

size=3><br>

<br>

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ элСмСнт "тСкстовая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ": <input

type=checkbox

name=types[] value=text><br>

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов: <input type=text

name=numbers[text]

size=3><br>

<input type=submit value="Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ">

</form>


Когда ΠΌΡ‹ пишСм Π² ΠΈΠΌΠ΅Π½ΠΈ элСмСнта Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ types[], это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ имя – ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт массива types. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρƒ нас ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Ρ„ΠΎΡ€ΠΌΡ‹ ("строка Π²Π²ΠΎΠ΄Π° тСкста") Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ имя types[0], Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ (тСкстовая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ) – types[1]. Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ task_form.html Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:



Рис. 5.1.  Π€ΠΎΡ€ΠΌΠ° для Π²Ρ‹Π±ΠΎΡ€Π° создаваСмых элСмСнтов ΠΈ ΠΈΡ… количСства

ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… этой Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ элСмСнты ΠΈ сколько элСмСнтов ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ названия для этих элСмСнтов:


Допустим, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° элСмСнта Ρ‚ΠΈΠΏΠ° «тСкстовая строка» ΠΈ ΠΎΠ΄ΠΈΠ½ элСмСнт Ρ‚ΠΈΠΏΠ° «тСкстовая ΠΎΠ±Π»Π°ΡΡ‚ΡŒΒ», ΠΊΠ°ΠΊ ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π²Ρ‹ΡˆΠ΅. Π’ΠΎΠ³Π΄Π° скрипт ask_names.php ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΅Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:



Рис. 5.2.  Π€ΠΎΡ€ΠΌΠ° для Π²Π²ΠΎΠ΄Π° Π½Π°Π·Π²Π°Π½ΠΈΠΉ создаваСмых элСмСнтов

Π’Π²Π΅Π΄Π΅ΠΌ Π² эту Ρ„ΠΎΡ€ΠΌΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строки «НазваниС», «Автор» ΠΈ Β«ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС». Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ скрипт task.php.


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого скрипта с Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹ΡˆΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°:



Рис. 5.3.  ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΠΎΡ€ΠΌΡ‹, сгСнСрированной нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ

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


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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ классы Π² PHP


Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ рассмотрим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡƒΡŽ языком PHP. Π‘ΡƒΠ΄ΡƒΡ‚ прСдставлСны понятия класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, способы ΠΈΡ… задания ΠΈ использования, способы Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ классов, конструкторы классов, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ наслСдования ΠΈ Ρ‚.ΠΏ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нововвСдСния, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, появившиСся Π² PHP5.


Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π΅ΡˆΠΈΠΌ Π·Π°Π΄Π°Ρ‡Ρƒ автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ТСланию ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ прСдставитСлСй классов статСй ΠΈΠ»ΠΈ личностСй, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… отобраТСния Π½Π° страницС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.


ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹


НачнСм с основных понятий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования – класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. БущСствуСт мноТСство ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ этих понятий. ΠœΡ‹ Π΄Π°Π΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ – это структурированная пСрСмСнная, содСрТащая всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ физичСском ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π΅ ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ понятии, класс – это описаниС Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ с Π½ΠΈΠΌΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.


Π’ PHP класс опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса:


class Имя_класса{

var $имя_свойства;

/*список свойств*/

function имя_ΠΌΠ΅Ρ‚ΠΎΠ΄Π°( ){

/* ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° */

}

/*список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²*/

}


ИмСна свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова var, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Π΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ функциями. Π’Π½ΡƒΡ‚Ρ€ΠΈ опрСдСлСния класса ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this для обращСния ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŽ класса.


НапримСр, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ статСй. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ свойства, ΠΊΠ°ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π°Π²Ρ‚ΠΎΡ€ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС. КакиС дСйствия ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ со ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΌ понадобится Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ значСния пСрСчислСнным свойствами ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π’ΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этого класса ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


<?

class Articles { // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ класс Π‘Ρ‚Π°Ρ‚Π΅ΠΉ

var $title;

var $author;

var $description;

// ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ присваиваСт значСния

// Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса

function make_article($t, $a, $d){

$this->title = $t;

$this->author = $a;

$this->description = $d;

}

//ΠΌΠ΅Ρ‚ΠΎΠ΄ для отобраТСния экзСмпляров класса

function show_article(){

$art = $this->title . "<br>" .

$this->description .

"<br>Автор: " . $this->author;

echo $art;

}

}

?>


Π˜Ρ‚Π°ΠΊ, для описания физичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Β«ΡΡ‚Π°Ρ‚ΡŒΡΒ» ΠΌΡ‹ создали класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Articles, состоящий ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, содСрТащих характСристики ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΈ Π΄Π²ΡƒΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для создания ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ для Π΅Π΅ отобраТСния.