Змінні оточення. PHP автоматично створює змінні оточення, як і звичайні змінні.
echo $HOME; /* Показує змінну HOME, якщо вона встановлена.*/
Хоча під час вступу інформації механізми GET, POST і Cookie також автоматично створюють змінні PHP, інколи краще явним чином прочитати змінну оточення, для того, щоб бути упевненим в здобутті її правильної версії. Для цього може використовуватися функція getenv(). Для установки значення змінної оточення користуйтеся функцією putenv().
Зміна типу.PHP не вимагає явного визначення типа при оголошенні змінній, тип змінної визначається по контексту в якому вона використовується. Тобто, якщо ви привласнюєте строкове значення змінної var, var стає рядком. Якщо потім привласнити змінній var значення цілого (числа), то вона стане цілою.
Прикладом автоматичного перетворення типа в PHP може служити оператор складання '+'. Якщо який-небудь з операндів є числом з дробовою частиною (тип double), то потім всі операнди оцінюються як double і результат матиме типа double. Інакше, ці операнды будуть інтерпретовані як цілі (integers) і результат так само матиме типа integer. Відзначимо, що при цьому НЕ міняються типи операндів, міняється лише їх оцінка.
$foo = "0"; // $foo є рядком (ASCII 48)
$foo++; // $foo є рядком "1" (ASCII 49)
$foo += 1; // $foo зараз є цілим (2)
$foo = $foo + 1.3; // $foo зараз має типа double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo є цілим (15)
$foo = 5 + "10 Small Pigs"; // $foo є цілим (15)
Якщо ви бажаєте змінити типа змінної, використовуйте settype().
Визначення типів змінних.Оскільки PHP визначає типів змінних і перетворить їх (загалом) в міру необхідності, не завжди вочевидь якого типа дана змінна має в якийсь окремий момент. Тому PHP включає декілька функцій, які дозволяють визначити поточного типа змінної. Це функції gettype(), is_long(), is_double(), is_string(), is_array(), і is_object().
Приведення типа.Приведення типа працює в PHP багато в чому так само як в C: назва необхідного типа записується в круглих дужках перед змінною, яка має бути приведена до даного типа.
$foo = 10; // $foo is an integer
$bar = (double) $foo; // $bar is а double
Допускається наступне приведення типів:
· (int), (integer) - приведення до цілого
· (real), (double), (float) - приведення до типа double
· (string) - приведення до рядка
· (array) - приведення до масиву
· (object) - приведення до об'єктної змінної
Відмітимо, що табуляція і пропуски допускаються усередині круглих дужок, тому наступне функціонально еквівалентно:
$foo = (int) $bar;
$foo = ( int ) $bar;
Перетворення рядків.Коли строкова змінна оцінюється як числова, результуюче значення і тип змінної визначаються таким чином.
Змінна string буде оцінена як double, якщо вона містить будь-який з символів '.', 'e', або 'E'. Інакше вона буде оцінена як integer.
Дане значення задається початковою частиною строкової змінної. Якщо рядок починається з допустимих цифрових даних, то це значення і використовуватиметься. Інакше, буде значення 0 (нуль). Допустимі цифрові дані - це конструкція з факультативного символу, наступного за однією або декількома цифрами (що містять факультативно десяткову крапку), позначаючого експоненту. Експонента може позначатися символом 'e' або 'E', який може слідувати за однією або декількома цифрами.
$foo = 1 + "10.5"; // $foo тип double (11.5)
$foo = 1 + "-1.3e3"; // $foo тип double (-1299)
$foo = 1 + "bob-1.3e3"; // $foo тип integer (1)
$foo = 1 + "bob3"; // $foo тип integer (1)
$foo = 1 + "10 Small Pigs"; // $foo тип integer (11)
$foo = 1 + "10 Little Piggies"; // $foo тип integer (11);
Маніпуляції з масивом.PHP підтримує як скалярні, так і асоціативні масиви. Фактично, між ними немає різниці. Ви можете створити масив, використовуючи функції list() або array(), або можна явно задати значення кожного елементу масиву.
$а[0]= "abc";
$а[1]= "def";
$b["foo"]= 13;
Можна також створити масив просто додаючи в нього значення.
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world"
Масив може сортуватися функціями asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), і uksort() залежно від типа бажаного сортування. Підрахунок кількості елементів масиву здійснюється функцією count(). Переміщатися по масиву дозволяють функції next() і prev(). Іншим типовим способом переміщення по масиву є використання функції each().
Елементи мови.
Будь-який скрипт PHP складається з послідовності операторів. Оператор може бути привласненням, викликом функції, циклом, умовним виразм або порожнім виразм (нічого що не робить). Оператори зазвичай закінчуються крапкою з комою. Також оператори можуть бути об'єднані в групу взяттям групи операторів у фігурних дужок. Група операторів також є оператором.
Константа.PHP визначає декілька констант і надає механізм для визначення Ваших констант. Константи схожі на змінні, але вони мають інший синтаксис.
Зумовлені константи - це __FILE__ and __LINE__, які відповідають імені файлу і номеру рядка, який виконується зараз.
<?php
function report_error($file, $line, $message){
echo "An error occured in $file on line $line: $message.";}
report_error(__FILE__,__LINE__, "Something went wrong!");
?>
Можна визначити додаткові константи за допомогою функцій define() і undefine().
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
undefine ("CONSTANT");
?>
Вирази.Вирази - це наріжний камінь PHP. У PHP майже все є виразами. Простий і найбільш точний спосіб визначити вираз - це "щось, що має значення". Простий приклад, що приходить на думку, - це константи і змінні. Коли ви друкуєте "$a = 5", ви привласнюєте значення '5' змінної $a.
Після цього привласнення ви вважаєте значенням $a 5, також, якщо ви напишете $b = $a, ви чекатимете того ж як, якби ви написали $b = 5. Іншими словами $a це також вираз із значенням 5. Запис типа '$b = ($a = 5)' схожа на запись'$a = 5; $b = 5;' (крапка з комою відзначає кінець вираз). Оскільки привласнення розглядаються справа наліво, ви також можете написати '$b = $a = 5'.
Складніші приклади виразів - це функції:
function foo () {
return 5;
}
Функції - це вирази з тим значенням, яке вони повертають. Оскільки foo() повертає 5, значення вираз 'foo()' - 5.
PHP підтримує 3 скалярних типа значень: ціле, число з плаваючою крапкою і рядки (скалярні вирази ви не можете "розбити" на більш маленькі частини, як, наприклад, масиви). PHP підтримує 2 складених (нескалярних) типа: масиви і об'єкти. Кожне з таких значень може бути привласнене змінною або повернене функцією.
PHP це мова, орієнтована на вирази, практично все є виразами.
Інший хороший приклад вираз це префіксне і постфіксне збільшення і зменшення. Користувачі З і багатьох інших мов можуть бути знайомі із записами variable++ and variable--. Це оператори збільшення і зменшення. У PHP, подібно C, є 2 типи інкремента - префіксний і постфіксний. Префіксне збільшення, яке записується як '++$variable', прирівнюється збільшеній змінній (PHP збільшує змінну до того, як прочитати її значення).
Дуже поширений тип виразів - це вирази порівняння. Ці вирази мають значення 0 або 1 (означає брехню або істину відповідно). PHP підтримує > (більше, ніж), >= ( більше або рівно) = (рівно), < (менше, ніж) і <= (менше або рівно). Ці вирази в основному використовуються усередині умов, наприклад оператора IF.
Останній приклад виразів, з якими ми розберемося, це поєднані вирази оператор-привласнення. У PHP, також як і у ряді інших мов типа C, ви можете писати '$a+=3'. Значення '$a+=3' як і значення звичайного привласнення - це привласнене значення. Будь-який бінарний оператор може бути записаний таким методом, наприклад : '$a–=5' (відняти 5 із значення $a), '$b*=7' (умножиить значення $a на 7) і так далі.
Є ще умовний оператор з трьома операндами: $first ? $second : $third. Якщо значення першого вираз достеменне (не рівне 0), то виконується друге вираз і це є результатом даного умовного вираз. Інакше виконується третій оператор.
Цей приклад повинен допомогти Вам краще зрозуміти вирази:
function double($i) /* функція подвоювання змінної */
{ return $i*2; }
$b = $a = 5; /* привласнюваний значення переменым $a і $b */
$з = $a++; /* постфіксне збільшення, привласнюваний $c початкове значення $a (5)*/
$e = $d = ++$b; /* префіксне збільшення $d і $e дорівнюють збільшеному значення $b */
$f = double($d++); /* $f = подвоєне значення $d до його увеличения*/
$g = double(++$e); /* $g = подвоєне значення $e після його збільшення */
$h = $g += 10; /* збільшити значення $g на 10, привласнити це значення змінної $h */
Не кожен вирази є оператором. Оператор має форму 'вираз' ';', тобто вираз, за яким слідує крапка з комою. У '$b=$a=5;' $a=5 це правильне вираз, але воно не є оператором. А ось '$b=$a=5;' є оператором.
Ще одна річ, яку потрібно згадати, - це логічні значення виразів. У багатьох випадках, в основному в умовних операторах і операторах циклів, ви не зацікавлені в конкретних значеннях виразів, а лише чи є їх значення TRUE або FALSE (у PHP немає спеціального типа boolean). Логічні значення обчислюються приблизно так само, як я в мові Perl. Будь-яке не нульове ціле значення - це TRUE, нуль - це FALSE. Зверніть увагу на те, що негативні значення - це не нуль і тому вони вважаються рівними TRUE. Порожній рядок і рядок '0' це FALSE; всі останні рядки - TRUE. І щодо складених типів (масиви і об'єкти) - якщо значення такого типа не містить елементів, то воно вважається рівним FALSE; інакше мається на увазі TRUE.
Далі ми писатимемо 'expr' для позначення будь-якого правильного вираз PHP.
IF.Можливості PHP по використанню виразу IF схожі на C:
if (expr) statement
Обчислюється логічний результат "expr" . Якщо expr рівне TRUE, то PHP виконає "statement", а якщо FALSE - проігнорує.
Наступний приклад виведе фразу 'а is bigger than b' якщо $a більше $b:
if ($a > $b) print "а is bigger than b";
Частенько Вам потрібно виконати більш ніж одне вираз по умові. Звичайно, не треба оточувати кожне вираз конструкцією IF. Замість цього ви можете згрупувати декілька виразів в блок виразів. Наприклад, наступний код не лише виведе фразу, але і привласнить значення $a змінній $b:
if ($a > $b) { print "а is bigger than b"; $b = $a; }
Вираз IF може мати необмежену міру вкладеності в інші вирази IF, що дозволяє Вам використовувати виконання по умові різних частин програми.
ELSE.Частенько Вам потрібно виконати одне вираз, якщо дотримується яка-небудь умова і інше вираз інакше. Ось для цього застосовується ELSE. ELSE розширює можливості IF по частині обробки варіантів вираз, коли воно рівне FALSE. Даний приклад виведе фразу 'а is bigger than b' якщо $a більше $b, і 'а is NOT bigger than b' інакше:
if ($a > $b) { print "а is bigger than b"; }
else { print "а is NOT bigger than b"; }
Вираз ELSE виконується лише якщо вираз IF рівне FALSE, а якщо є конструкції ELSEIF - те якщо і вони також рівні FALSE (див. нижчий).
ELSEIF.Є комбінацією IF і ELSE. ELSEIF, як і ELSE дозволяє виконати вираз, якщо значення IF рівне FALSE, але на відміну від ELSE, воно виконається лише якщо вираз ELSEIF рівне TRUE. Наприклад, наступний код виведе 'а is bigger than b' якщо $a>$b, 'а is equal to b' якщо $a==$b, і 'а is smaller than b' если$a<$b:
if ($a > $b) { print "а is bigger than b";}
elseif ($a == $b) { print "а is equal to b";}
else { print "а is smaller than b"; }
Усередині одного виразу IF може бути декілька ELSEIF. Перше вираз ELSEIF (якщо такі є), яке буде рівне TRUE, буде виконано. У PHP ви можете написати 'Else if' (два слова), що означатиме те ж саме, що і 'elseif' (одне слово).
Вираз ELSEIF буде виконано, лише якщо вираз IF і все попередні ELSEIF рівне FALSE, а даний ELSEIF рівний TRUE.
Інший синтаксис для оператора IF: IF(): ... ENDIF;PHP пропонує іншу дорогу для групування операторів з оператором IF. Найчастіше це використовується, коли ви упроваджуєте блоки HTML всередину оператора IF, але взагалі може використовуватися де завгодно. Замість використання фігурних дужок за "IF(вираз)" повинні слідувати двокрапка, одне або декілька виразів і завершуючий ENDIF. Розглянете наступний приклад:
<?php if ($a==5): ?> A = 5 <?php endif; ?>
В даному прикладі блок "A = 5" внедрЈн всередину вираз IF, використовуваного альтернативним способом. Блок HTML буде видний, лише якщо $a рівне 5.
Цей альтернативний синтаксис застосовний і до ELSE і ELSEIF (expr) .Вот приклад подібної структури :
if ($a == 5): print "а equals 5"; print "...";
elseif ($a == 6): print "а equals 6"; print "!!!";
else: print "а is neither 5 nor 6";
endif;
WHILE.Цикл WHILE - простий тип циклу в PHP. Він діє, як і його аналог в C. Основна форма оператора WHILE:
WHILE(expr) statement
Він наказує PHP виконувати вкладене оператора до тих пір, поки expr рівне TRUE. Значення вираз перевіряється кожного разу при початку циклу, так що якщо значення вираз зміниться усередині циклу, то він не урветься до кінця поточної ітерації. Якщо значення expr рівне FALSE із самого початку, цикл не виконується жодного разу.
Як і в IF, ви можете згрупувати декілька операторів усередині фігурних дужок або використовувати альтернативний синтаксис:
WHILE(expr): вирази ... ENDWHILE;
Наступні приклади ідентичні - обоє виводять номери з 1 по 10:
/* example 1 */
$i = 1;
while ($i <= 10) { print $i++; }
/* example 2 */
$i = 1;
while ($i <= 10): print $i; $i++;
endwhile;
DO..WHILE.Цикл DO..WHILE дуже схожий на WHILE за винятком того, що значення логічного вираз перевіряється не до, а після закінчення ітерації. DO..WHILE гарантовано виконається хоч би один раз, що в разі WHILE не обов'язково.
Для циклів DO..WHILE існує лише один вигляд синтаксису:
$i = 0; do { print $i; } while ($i>0);
Цей цикл виконається один раз, оскільки після закінчення ітерації буде перевірено значення логічного вираз, а воно рівне FALSE ($i не більше 0).
Програмісти на C знайомі з іншим використанням DO..WHILE, що дозволяє припинити виконання блоку операторів в середині шляхом впровадження його в цикл DO..WHILE(0) і використання оператора BREAK. Наступний код демонструє таку можливість :
do {
if ($i < 5) {
print "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) { break; }
print "i is ok";
} while(0);
FOR.Цикли FOR - найбільш потужні цикли в PHP. Вони працюють подібно до їх аналогів в C. Синтаксис циклу FOR :
FOR (expr1; expr2; expr3) statement
Перше вираз (expr1) безумовно обчислюється(виконується) на початку циклу.
На початку кожної ітерації обчислюється expr2. Якщо воно рівне TRUE, то цикл продовжується і виконуються вкладений(е) оператор(ы). Якщо воно рівне FALSE, то цикл закінчується. В кінці кожної ітерації обчислюється(виконується) expr3.
Кожен з цих виразів може бути порожнім. Якщо expr2 порожньо, то цикл продовжується нескінченно (PHP за замовчуванням рахує його рівним TRUE, як і З). Це не так марно, як могло б здатися, оскільки частенько вам потрібно закінчити виконання циклу, використовуючи оператора BREAK у поєднанні з логічною умовою замість використання логічного вираз в FOR.
Розглянемо наступні приклади. Всі вони виводять номери з 1 по 10 :
/* приклад 1 */
for ($i = 1; $i <= 10; $i++)
print $i;
}/* приклад 2 */
for ($i = 1;;$i++) {
if ($i > 10) break;
print $i;
}/* приклад 3 */
$i = 1;
for (;;) {
if ($i > 10) break;
print $i;
$i++;
}/* приклад 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
PHP також підтримує альтернативний синтаксис FOR :
FOR (expr1; expr2; expr3): вираз; ...; endfor;
Інші мови використовують оператора foreach для того, щоб обробляє масиви або списки. PHP використовує для цього оператора while і функції list() і each() . Для прикладу дивитеся документацію по цих функціях.
BREAK.Перериває виконання поточного циклу.
$i = 0;
while ($i < 10) {
if ($arr[$i] == "stop") { break; }
$i++;
}
CONTINUE.CONTINUE переходить на початок найближчого циклу.
while (list($key,$value)= each($arr)) {
if ($key % 2) { // skip even members
continue; }
do_something_odd ($value);
}
SWITCH.Оператор SWITCH схожий на групу операторів IF з однаковим виразм. У багатьох випадках вам потрібно порівняти змінну (або вираз) з багатьма різними значеннями і виконати різні фрагменти коду залежно від того, чому дорівнюватиме значення вираз.
Наступні 2 приклади - це 2 різних шляхи для досягнення однієї мети, але один використовує серію операторів IF, а інший - оператор SWITCH.
/* приклад 1 */
if ($i == 0) { print "i equals 0"; }
if ($i == 1) { print "i equals 1"; }
if ($i == 2) { print "i equals 2"; }
/* приклад 2 */
switch ($i) {
case 0: print "i equals 0"; break;
case 1: print "i equals 1"; break;
case 2: print "i equals 2"; break;
}
SWITCH виконує послідовно оператора за оператором. На початку код не виконується. Лише коли зустрічається оператор CASE з відповідним значенням, PHP починає виконувати програму. PHP продовжує виконувати операторів до кінця блоку SWITCH або доки не зустріне оператора BREAK. Якщо ви не напишете BREAK в кінці циклу операторів, то PHP продовжить виконувати операторів і наступного SWITCH'а. Наприклад:
switch ($i) {
case 0: print "i equals 0";
case 1: print "i equals 1";
case 2: print "i equals 2";
}
В цьому випадку, якщо $i рівне 0, то PHP виконає всіх операторів print! Якщо $i рівне 1, то PHP виконає останні два print. І лише якщо $i рівне 2, ви отримаєте очікуваний результат і виведено буде лише 'i equals 2'. Отже важливо не забувати ставити BREAK. Спеціальний випадок - це 'Default case'. Цей оператор відповідає всім значенням, які не задовольняють іншим case'ам. Наприклад :
switch ($i) {
case 0: print "i equals 0"; break;
case 1: print "i equals 1"; break;
case 2: print "i equals 2"; break;
default: print "i is not equal to 0, 1 or 2";
}
Вирази в CASE можуть бути будь-якого скалярного типа, тобто цілі числа або числа з плаваючою комою, а так само рядки. Масиви і об'єкти не будуть помилкою.
REQUIRE.Оператор REQUIRE замінює себе вмістом вказаного файлу, схоже на те, як в препроцесорі C працює #include. Це означає, що ви не можете помістити require() всередину циклу і чекати, що він включить вміст іншого файлу кілька разів в процесі кожної ітерації. Для це використовуйте INCLUDE.
require ('header.inc');
INCLUDE.Оператора INCLUDE вставляє і виконує вміст вказаного файлу. Це трапляється кожного разу, коли зустрічається оператор INCLUDE, так що ви можете включити цього оператора всередину циклу, аби включити декілька файлів :
$files = array ('first.inc', 'second.inc', 'third.inc');
for ($i = 0; $i < count($files); $i++) { include($files[$i]); }
include() відрізняється від require() тим, що оператор include виконується кожного разу при його зустрічі, а require() замінюється на вміст вказаного файлу безвідносно чи буде виконано його вміст чи ні. Оскільки include() це спеціальний оператор, потрібно брати його у фігурних дужок при використанні усередині умовного оператора.
/* Це неправильно і не працюватиме, як хотілося б. */
if ($condition) include($file);
else include($other);
/* А ось це - вірно. */
if ($condition) { include($file);}
else { include($other); }
Коли файл виконується, парсер перебуває в "режимі HTML", тобто виводитиме вміст файлу, поки не зустріне перший стартовий тег PHP (<?).
FUNCTION.Функція може бути оголошена таким чином:
function foo ($arg_1, $arg_2, ..., $arg_n) {
echo "Example function.\n";
return $retval; }
Усередині функції може бути будь-який вірний код PHP, навіть оголошення іншій функції або класу. Функції мають бути визначені перед тим, як на них посилатися.
Повернення результатів.Результати повертаються через необов'язкового оператора return. Повертаний результат може бути будь-якого типу, включаючи списки і об'єкти.
function my_sqrt ($num) {
return $num * $num; }
echo my_sqrt (4); // outputs '16'.
Множинні результати не можуть бути повернені як результат, але ви можете реалізувати це шляхом повернення списку :
function foo() {
return array (0, 1, 2); }
list ($zero, $one, $two) = foo();
Аргументи.Інформація може бути передана функції через список аргументів, які є розділеним комами списком змінних і констант.
PHP підтримує передачу аргументів за значенням (за замовчуванням), по засланню, і значення за замовчуванням. Списки аргументів змінної довжини не підтримуються, але того ж можна досягти, передаючи масиви.
function takes_array($input){
echo "$input[0]+ $input[1] = ", $input[0]+$input[1];
}
Передача по засланню.За замовчуванням, аргументи функції передаються за значенням. Якщо ви хочете у функції модифікувати аргументи, то можете передати їх по засланню.
Якщо ви хочете, аби аргумент завжди передавався по засланню, то слід поставити амперсанд (&) перед ім'ям аргументу в оголошенні функції:
function foo( &$bar ){
$bar .= ' and something extra.'; }
$str = 'This is а string ';
foo ($str);
echo $str; // виведе :'This is а string, and something extra.'
Якщо ви хочете передати аргумент по засланню у разі, коли за замовчуванням такого не робиться, то додайте амперсанд перед ім'ям аргументу у виклику функції :
function foo ($bar) {
$bar .= ' and something extra.';}
$str = 'This is а string ';
foo ($str);
echo $str; // виведе 'This is а string '
foo (&$str);
echo $str; // виведе 'This is а string, and something extra.'
Значення за замовчуванням.Функції можуть визначати значення за замовчуванням для скалярних аргументів в стилі C++ як показано :
function makecoffee ($type = "cappucino") {
echo "Making а cup of $type.\n";
}
echo makecoffee ();
echo makecoffee ("espresso");
Цей приклад виведе наступне :
Making а cup of cappucino.
Making а cup of espresso.
Значення за замовчуванням має бути константою, а не змінною або, наприклад, членом класу. Врахуйте, що коли ви оголошуєте аргументи за замовчуванням, вони мають бути праворуч від всіх "неумолчиваемых" аргументів, інакше це не працюватиме, як задумано. Наприклад :
function makeyogurt ($type = "acidophilus" $flavour) {
return "Making а bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry");
Цей приклад виведе наступне :
Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Making а bowl of raspberry .
А тепер порівняєте з цим :
function makeyogurt ($flavour, $type = "acidophilus") {
return "Making а bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry"); // а ось це працює
І виводить наступне :
Making а bowl of acidophilus raspberry.
Клас.Клас - це набір змінних і функцій, що працюють з цими змінними. Клас визначається таким чином :
<?php
class Cart {
var $items; // Кількість речей в корзині покупця
// Додати $num найменувань типа $artnr у корзину
function add_item ($artnr, $num) {
$this->items[$artnr]+= $num; }
// Прибрати $num найменувань $artnr з корзини
function remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr]-= $num;
return true; }
else { return false; }
}
}
?>
Це визначення класу Cart, який полягає зв'язного списку найменувань товарів в корзині і двох функцій для додавання і видалення речей з корзини.
Класи це типи, тобто, заготовки для реальних змінних. Ви повинні створювати змінні бажаного типа, використовуючи оператора new :
$cart = new Cart;
$cart->add_item("10", 1);
Таким чином, ми створили об'єкт $cart класу Cart. Функція add_item() цього об'єкту викликається для додавання 1 товару номер 10 до корзини.
Класи можуть бути розширеннями інших класів. Розширений клас володіє всіма змінними і функціями базового класу і тим, що ви визначите при розширенні класу. Це робиться, використовуючи ключове слово extends:
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name; }
}
Це визначає клас Named_Cart, який має всі змінні і функції класу Cart плюс додаткову змінну $owner і додаткову функцію set_owner(). Ви можете створити пойменовану корзину звичайним способом і встановити або отримати власника корзини. Також ви можете використовувати і нормальні функції корзини в пойменованій корзині :
$ncart = new Named_Cart; // Створити корзину
$ncart->set_owner ("kris"); // Вказати власника
print $ncart->owner; // Роздрукувати ім'я власника корзини
$ncart->add_item ("10", 1); // (успадковано із звичайної корзини)
Усередині функцій класу змінна $this означає сам об'єкт. Ви повинні використовувати $this->нечто для доступу до змінної або функції з ім'ям 'щось' усередині об'єкту.
Конструктори це функції в класі, які автоматично викликаються, коли ви створюєте нову змінну даного класу. Функція стає класом, коли вона має таке ж ім'я, як і сам клас.
class Auto_Cart extends Cart {
function Auto_Cart () {
$this->add_item ("10", 1); }
}
Ми визначили клас Auto_Cart який є тим же класом Cart плюс має конструктор, який ініціалізував корзину при створенні, наповнюючи її одним товаром типа "10". Конструктори також можуть мати аргументи, і ці аргументи можуть бути необов'язковими, що робить конструктор кориснішим:
class Constructor_Cart {
function Constructor_Cart ($item = "10", $num = 1) {
$this->add_item ($item, $num);
}
}// Купуємо все одне і те ж:
$default_cart = new Constructor_Cart;
// А тут щось нове :
$different_cart = new Constructor_Cart ("20", 17);
Оператори
Арифметичні оператори. Ці оператори працюють так само
Таблиця 6.1. Арифметичні оператори
Приклад | Назва | Результат |
$а + $b | Складання | Сума $a і $b. |
$а - $b | Віднімання | Віднімає $b з $a. |
$а * $b | Множення | Твір $a і $b. |
$а / $b | Ділення | Ділення $a на $b. |
$а % $b | Залишок ділення | Залишок від ділення $a на $b. |
Оператор ділення("/") повертає цілу величину(результат цілочисельного ділення) якщо обоє оператора - цілі (або рядок перетворений в ціле). Якщо кожен операнд є величиною з плаваючою комою, виконається ділення з плаваючою комою.
Оператори рядків.B дійсності є лише один оператор - конкатенації (".").
$а = "Hello ";
$b = $a . "World!"; // тепер $b = "Hello World!"
Оператори привласнення.Основним оператором привласнення є "=". Це означає, що лівий операнд набуває значення вираз справа (збиральне привласнення). Значенням вираз привласнення є привласнювана величина. Отже якщо "$a = 3", то це 3.
$а = ($b = 4) + 5; // тепер $a рівне 9, а $b стало рівним 4.
На додаток до основних операторів привласнення є додаткові "комбінаційні оператори", для всіх арифметичних і строкових операторів, що дозволяє Вам використовувати значення у вираженні і потім встановлювати своє значення в результаті цього виразу. Наприклад:
$а = 3; $a += 5; // тепер $a рівне 8
$b = "Hello ";
$b .= "There!"; // тепер $b рівне "Hello There
Бінарні Оператори (Побітові Логічні Оператори).Бінарні Оператори дозволяють вам змінювати біти в цілих числах.
Дата добавления: 2016-04-02; просмотров: 890;