Програма Основний синтаксис icon

Програма Основний синтаксис




НазваПрограма Основний синтаксис
Сторінка2/3
Дата29.05.2013
Розмір0.53 Mb.
ТипЛекция
1   2   3

". $ arr [0] [0 ].": "; 
for ($ q = 0; $ q <= 2; $ q + +) { 
echo $ arr [2] [$ q]. "
"; 

echo "

". $ arr [0] [1 ].": "; 
for ($ w = 0; $ w <= 2; $ w + +) { 
echo $ arr [1] [$ w]. "
"; 

?> 

^ Асоціативні масиви в PHP

   У PHP індексом масиву може бути не тільки число, але і рядок. Причому на такий рядок не накладаються ніякі обмеження: вон може містити пробіли, довжина такого рядка може бути будь-яка.

   Асоціативні масиви особливо зручні в ситуаціях, коли елементи масиву зручніше пов'язувати зі словами, а не з числами.

   Отже, масиви, індексами яких є рядки, називаються асоціативними масивами.


^ Одномірні асоціативні масиви:

   Одномірні асоціативні масиви містять тільки один ключ (елемент), відповідний конкретному індексу асоціативного масиву. Наведемо приклад:


/ / Асоціативний масив 
$ Names ["Іванов"] = "Іван"; 
$ Names ["Сидоров"] = "Микола"; 
$ Names ["Петров"] = "Петро"; 
/ / У даному прикладі: прізвища - ключі асоціативного масиву 
/ /, А імена - елементи масиву names 
?>

   Доступ до елементів одновимірних асоціативних масивів здійснюється так само, як і до елементів звичайних масивів, і називається доступом по ключу:

echo $ names ["Іванов"];




^ Багатовимірні асоціативні масиви:6

   Багатовимірні асоціативні масиви можуть містити кілька ключів, які відповідають конкретним індексам асоціативного масиву. Розглянемо приклад багатовимірного асоціативного масиву: 
/ / Багатомірний масив 
$ A ["Ivanov"] = array ("name" => "Іванов І.І.", "age" => "25", "email" => "ivanov@mail.ru"); 
$ A ["Petrov"] = array ("name" => "Петров П.П.", "age" => "34", "email" => "petrov@mail.ru"); 
$ A ["Sidorov"] = array ("name" => "Сидоров С.С.", "age" => "47", "email" => "sidorov@mail.ru"); 
?>

   Багатовимірні масиви схожі на записи у мові Pascal або структури в мові C.

   Доступ до елементів багатовимірного асоціативного масиву здійснюється наступним чином: 
echo $ A ["Ivanov"] ["name"]; / / Виводить Іванов І.І. 
echo $ A ["Petrov"] ["email"]; / / Виводить petrov@mail.ru

   Як ви вже помітили, для створення багатовимірного асоціативного масиву ми використовували спеціальну функцію array, ми її розглянемо пізніше, коли будемо розглядати операції над масивами.

   Асоціативні багатовимірні масиви можна створювати і класичним способом, хоча це не так зручно: 
/ / Багатомірний асоціативний масив 
$ A ["Ivanov"] ["name"] = "Іванов І.І."; 
$ A ["Ivanov"] ["age"] = "25"; 
$ A ["Ivanov"] ["email"] = "ivanov@mail.ru"; 

$ A ["Petrov"] ["name"] = "Петров П.П."; 
$ A ["Petrov"] ["age"] = "34"; 
$ A ["Petrov"] ["email"] = "petrov@mail.ru"; 

$ A ["Sidorov"] ["name"] = "Сидоров С.С."; 
$ A ["Sidorov"] ["age"] = "47"; 
$ A ["Sidorov"] ["email"] = "sidorov@mail.ru"; 

/ / Отримуємо доступ до ключів багатовимірного асоціативного масиву 
echo $ A ["Ivanov"] ["name "]."< br>"; / / Виводить Іванов І.І. 
echo $ A ["Sidorov"] ["age "]."< br>"; / / Виводить 47 
echo $ A ["Petrov"] ["email "]."< br>"; / / Виводить petrov@mail.ru 
?>




^ Тип object (об'єкти)

   Об'єкти - тип даних, що прийшов з об'єктно-орієнтованого програмування (ООП). Згідно з принципами ООП, клас - це набір об'єктів, що володіють певними властивостями і методами роботи з ним, а об'єкт відповідно - екземпляр класу. Наприклад, програмісти - це клас людей, які пишуть програми, вивчають комп'ютерну літературу і, крім того, як всі люди, мають ім'я та прізвище. Тепер, якщо взяти одного конкретного програміста, Васю Іванова, то можна сказати, що він є об'єктом класу програмістів, має ті ж властивості, що й інші програмісти, теж має ім'я, пише програми і т.п.

   У PHP для доступу до методів об'єкта використовується оператор ->. Для ініціалізації об'єкту використовується вираз new, що створює в змінної екземпляр об'єкта.


/ / Створюємо клас людей 
class Person 

/ / Метод, який навчає людину PHP 
function know_php () 

echo "Тепер я знаю PHP"; 


$ Bob = new Person; / / створюємо об'єкт 
/ / Класу людина 
$ Bob -> know_php (); / / навчаємо його PHP 
?> 
Приклад 8. Об'єкти в PHP

   Більш докладно реалізацію принципів ООП в мові PHP ми розглянемо в одній з наступних лекцій.




^ Тип resource (ресурси)

   Ресурс - це спеціальна змінна, що містить посилання на зовнішній ресурс (наприклад, з'єднання з базою даних). Ресурси створюються та використовуються спеціальними функціями (наприклад, mysql_connect (), pdf_new () і т.п.).


   Тип Null

   Спеціальне значення NULL говорить про те, що змінна не має значення.

   Змінна вважається NULL, якщо:

  • їй була присвоєна константа NULL ($ var = NULL);

  • їй ще не було присвоєно будь-яке значення;

  • вона була вилучена за допомогою unset ().

   Існує тільки одне значення типу NULL - регістронезалежне ключове слово NULL.




^ Керуючі конструкції

Умовні оператори

Оператор if

   Це один з найважливіших операторів багатьох мов, включаючи PHP. Він дозволяє виконувати фрагменти коду в залежності від умови. Структуру оператора if можна представити наступним чином: 
   if (вираз) блок_виконання

   Тут вираз є будь-який правильний PHP-вираз (тобто все, що має значення). У процесі обробки скрипта вираз перетвориться до логічного типу. Якщо в результаті перетворення значення виразу істинно (True), то виконується блок_виконання. В іншому випадку блок_виконання ігнорується. Якщо блок_виконання містить кілька команд, то він повинен бути укладений у фігурні дужки {}.

   Правила перетворення виразу до логічного типу: 
   1. Правила перетворення виразу до логічного типу:



  • логічне False



  • цілий нуль (0)



  • дійсний нуль (0.0)



  • порожній рядок і рядок "0"



  • масив без елементів



  • об'єкт без змінних (детально про об'єкти буде розказано в одній з наступних лекцій)



  • спеціальний тип NULL


    2. Всі інші значення перетворюються в TRUE. 
$ Names = array ("Іван", "Петро", "Семен"); 
if ($ names [0] == "Іван") { 
echo "Привіт, Ваня!"; 
$ Num = 1; 
$ Account = 2000; 

if ($ num) echo "Іван перший у списку!"; 
$ Bax = 30; 
if ($ account> 100 * $ bax +3) 
echo "Цей рядок не з'явиться 
на екрані, так як умова не виконана "; 
?> 
Приклад 9. Умовний оператор if




^ Оператор else

   Ми розглянули тільки одну, основну частину оператора if. Існує кілька розширень цього оператора. Оператор else розширює if на випадок, якщо вираз, що перевіряється в if є невірним, і дозволяє виконати будь-які дії за таких умов.

   Структуру оператора if, розширеного за допомогою оператора else, можна представити таким чином:

if (вираз) блок_виконання 
else блок_виконання1

   Цю конструкцію if ... else можна інтерпретувати приблизно так: якщо виконана умова (тобто вираз = true), то виконуємо дії з блоку_виконання, інакше - дії з блоку_виконання1. Використовувати оператор else не обов'язково.

   Подивимося, як можна змінити попередній приклад, з огляду на необхідність здійснення дій та в разі невиконання умови. 
$ Names = array ("Іван", "Петро", "Семен"); 
if ($ names [0] == "Іван") { 
echo "Привіт, Ваня!"; 
$ Num = 1; 
$ Account = 2000; 
} Else { 
echo "Привіт, $ names [0]. 
А ми чекали Ваню: ("; 

if ($ num) echo "Іван перший у списку!"; 
else echo "Іван НЕ перший у списку?!"; 
$ Bax = 30; 
if ($ account> 100 * $ bax +3) 
echo "Цей рядок не з'явиться на екрані, 
так як умова не виконана "; 
else echo "Зате з'явиться цей рядок!"; 
?> 
Приклад 10. Оператор else




^ Оператор elseif

   Ще один спосіб розширення умовного оператора if - використання оператора elseif. Еlseif - це комбінація else і if. Як і else, він розширює if для виконання різних дій у тому випадку, якщо умова, що перевіряється в if, невірно. Але на відміну від else, альтернативні дії будуть виконані, тільки якщо elseif-умова є вірним. Структуру оператора if, розширеного за допомогою операторів else і elseif, можна представити таким чином:

   if (вираз) блок_виконання

   elseif (вираз1) блок_виконання1

   ...

   else блок_ виконанняN

   Операторів elseif може бути відразу кілька в одному if-блоці. Elseif-твердження буде виконано, тільки якщо попереднє if-умова є False, всі попередні elseif-умови є False, а дане elseif-умова - True. 
$ Names = array ("Іван", "Петро", "Семен"); 
if ($ names [0] == "Іван") { 
/ / Якщо перше ім'я в масиві Іван 
echo "Привіт, Ваня!"; 
} Elseif ($ names [0] == "Петро") { 
/ / Якщо перше ім'я 
/ / Не Іван, а Петро 
echo "Привіт, Петя!"; 
} Elseif ($ names [0] == "Семен") { 
/ / Якщо перше ім'я не 
/ / Іван, не Петро, а Семен 
echo "Привіт, Сеня!"; 
} Else { 
/ / Якщо перше ім'я не Іван, 
/ / Не Петро І не Семен 
echo "Привіт, $ names [0]. А ти хто такий?"; 

?> 
Приклад 11. Оператор elseif




^ Оператор switch

   Ще одна конструкція, що дозволяє перевіряти умови і виконувати в залежності від цього різні дії, - цеswitch. У залежності від того, яке значення має змінна, він перемикається між різними блоками дії. switch дуже схожий на оператор if ... elseif ... else або набір операторів if. Структуру switch можна записати наступним чином:

   switch (вираз чи змінна) { 
   case значення1: 
    блок_дій1 
   break; 
   case значення2: 
    блок_дій2 
   break; 
   ... 
   default: 
    блок_дій_при_замовчуванні 
   }

   На відміну від if, тут значення виразу не приводиться до логічного типу, а просто порівнюється зі значеннями, перерахованими після ключових слів case (значення1, значення2 і т.д.). Якщо значення виразу співпало з якимсь варіантом, то виконується відповідний блок_дій - від двокрапки після значення, що співпало до кінця switch або до першого оператора break, якщо такий знайдеться. Якщо значення виразу не співпало з жодним із варіантів, то виконуються дії за умовчанням (блок_дій_при_замовчуванні), що знаходяться після ключового слова default. Вираз в switch обчислюється тільки один раз, а в операторі elseif - кожен раз, тому, якщо вираз досить складний, то switch працює швидше.

   Приклад 11 можна переписати з використанням switch наступним чином: 
      $ Names = array ("Іван", "Петро", "Семен"); 
   switch ($ names [0]) { 
   case "Іван": 
    echo "Привіт, Ваня!"; 
   break; 
   case "Петро": 
    echo "Привіт, Петя!"; 
   break; 
   case "Семен": 
    echo "Привіт, Сеня!"; 
   break; 
   default: 
    echo "Привіт, $ names [0]. 
   А як Вас звати? "; 
   } 
   ?>

   Якщо в цьому прикладі опустити оператор break, наприклад, в case "Петро":, то, якщо змінна виявиться рівною рядку "Петро", після виведення на екран повідомлення "Привіт, Петя!" програма піде далі і виведе також повідомлення "Привіт, Сеня!" і тільки потім, зустрівши break, продовжить своє виконання за межами switch.

   Для конструкції switch, як і для if, можливий альтернативний синтаксис, де відкриває switch фігурна дужка замінюється двокрапкою, а закриває - endswitch; відповідно.




Цикли

   У PHP існує кілька конструкцій, що дозволяють виконувати повторювані дії в залежності від умови. Це цикли while, do .. while, foreach та for. Розглянемо їх більш докладно.




while

   Структура: 
   while (вираз) {блок_виконання} 
   або 
   while (вираз): блок_виконання endwhile;

   while - простий цикл. Він наказує PHP виконувати команди блоку_виконання до тих пір, поки вираз обчислюється як True (тут, як і в if, відбувається приведення вислови до логічного типу). Значення виразу перевіряється щоразу на початку циклу, так що, навіть якщо його значення змінилося в процесі виконання блоку_виконання, цикл не буде зупинено до кінця ітерації (тобто поки всі команди блоку_виконання не будуть виконані). 
      / / Ця програма надрукує всі парні цифри 
    $ I = 1; 
    while ($ i <10) { 
    if ($ i% 2 == 0) print $ i; 
    / / Друкуємо цифру, якщо вона парна 
    $ I + +; 
    / / І збільшуємо $ i на одиницю 
    } 
   ?> 
Приклад 12. Оператор while




do ... while

   Цикли do .. while дуже схожі на цикли while, з тією лише різницею, що істинність висловлювання перевіряється наприкінці циклу, а не на початку. Завдяки цьому блок_виконання циклу do ... while гарантовано виконується хоча б один раз.

   Структура: 
   do {блок_виконання} while (вираз); 

      / / Ця програма надрукує число 12, незважаючи на те 
   / / Що умова циклу не виконано 
   $ I = 12; 
    do { 
    if ($ i% 2 == 0) print $ i; 
    / / Якщо число парне, то друкуємо його 
    $ I + +; 
    / / Збільшуємо число на одиницю 
    } While ($ i <10) 
   ?> 
Приклад 13. Оператор do .. while




for

   Це найскладніші цикли в PHP. Вони нагадують відповідні цикли C.

   Структура: 
   for (вираз1; вираз2; вираз3) {блок_виконання} 
   або 
   for (вираз1; вираз2; вираз3): блок_виконання endfor;

   Тут, як ми бачимо, умова складається одразу з трьох виразів. Перший вираз вираз1 обчислюється безумовно один раз на початку циклу. На початку кожної ітерації обчислюється вираз2. Якщо він є True, то цикл продовжується і виконуються всі команди блоку_виконання. Якщо вираз2 обчислюється як False, то виконання циклу зупиняється. В кінці кожної ітерації (тобто після виконання всіх команд блоку_виконання) обчислюється вираз3.

   Кожне з виразів 1, 2, 3 може бути порожнім. Якщо вираз2 є порожнім, то це значить, що цикл повинен виконуватися невизначений час (у цьому випадку PHP вважає це вираз завжди істинним). Це не так марно, як здається, адже цикл можна зупиняти, використовуючи оператор break.

   Наприклад, всі парні цифри можна вивести з використанням циклу for таким чином: 
      for ($ i = 0; $ i <10; $ i + +) { 
    if ($ i% 2 == 0) print $ i; 
    / / Друкуємо парні числа 
   } 
   ?>

   Якщо опустити другий вираз (умова $ i <10), то таку ж задачу можна вирішити, зупиняючи цикл оператором break. 
    < ? Php 
   for ($ i = 0;; $ i + +) { 
    if ($ i> = 10) break; 
    / / Якщо $ i більше або дорівнює 10, 
    / / То припиняємо роботу циклу 
    if ($ i% 2 == 0) print $ i; 
   / / Якщо число парне, 
    / / То друкуємо його 
   } 
   ?>

   Можна опустити всі три вирази. У цьому випадку просто не буде задано початкове значення лічильника $ i і воно не буде змінюватися кожного разу наприкінці циклу. Всі ці дії можна записати у вигляді окремих команд або в блоці_виконання, або перед циклом: 
      $ I = 2; / / задаємо початкове значення лічильника 
   for (;;) { 
    if ($ i> = 10) break; 
   / / Якщо $ i більше або дорівнює 10, 
    / / То припиняємо роботу циклу 
    if ($ i% 2 == 0) print $ i; 
   / / Якщо число парне, 
    / / То друкуємо його 
   $ I + +; / / збільшуємо лічильник на одиницю 
   } 
   ?>

   У третє вираз конструкції for можна записувати через кому відразу кілька найпростіших команд. Наприклад, якщо ми хочемо просто вивести всі цифри, то програму можна записати зовсім просто: 
      for ($ i = 0; $ i <10; print $ i, $ i + +) 
   / * Якщо блок_виконання не містить команд 
   або містить тільки одну команду, 
   фігурні дужки, в які він укладений, 
   можна опускати * / 
   ?>




foreach

   Ще одна корисна конструкція. Вона з'явилася тільки в PHP4 і призначена виключно для роботи з масивами.

   Синтаксис: 
   foreach ($ array as $ value) {блок_виконання} 
   або 
   foreach ($ array as $ key => $ value) 
     {Блок_виконання}

   У першому випадку формується цикл по всіх елементах масиву, заданого змінною $ array. На кожному кроці циклу значення поточного елемента масиву записується в змінну $ value, і внутрішній лічильник масиву пересувається на одиницю (так що на наступному кроці буде видно наступний елемент масиву). Усередині блоку_виконання значення поточного елемента масиву може бути отримано за допомогою змінної $ value. Виконання блоку_виконання відбувається стільки разів, скільки елементів в масиві $ array.

   Друга форма запису на додаток до перерахованого вище на кожному кроці циклу записує ключ поточного елемента масиву в змінну $ key, яку теж можна використовувати в блоці_виконання.

   Коли foreach починає виконання, внутрішній покажчик масиву автоматично встановлюється на перший елемент. 
      $ Names = array ("Іван", "Петро", "Семен"); 
   foreach ($ names as $ val) { 
    echo "Привіт, $ val
"; 
    / / Виведе всім вітання 
   } 
   foreach ($ names as $ k => $ val) { 
    / / Крім привітання, 
    / / Виведемо номера в списку, тобто ключі 
    echo "Привіт, $ val! 
   Ти в списку під номером $ k
"; 
   } 
   ?> 
Приклад 14. Оператор foreach




^ Оператори передачі управління

   Іноді потрібно негайно завершити роботу циклу або окремої його ітерації. Для цього використовують оператори break та continue.




Break

    
      $ I = 1; 
   while ($ i) { 
    $ N = rand (1,10); 
    / / Генеруємо довільне число 
    / / Від 1 до 10 
    echo "$ i: $ n"; 
    / / Виводимо номер ітерації і 
    / / Згенероване число 
    if ($ n == 5) break; 
   / * Якщо було створене число 5, 
   то припиняємо роботу циклу. У цьому випадку 
   все, що знаходиться після цього рядка 
   всередині циклу, не буде виконана * / 
    echo "Цикл працює
"; 
    $ I + +; 
   } 
   echo "
Число ітерацій циклу $ i"; 
   ?> 
Приклад 15. Оператор break

    Результатом роботи цього скрипта буде приблизно наступне: 
   1:7 Цикл працює 
   2:2 Цикл працює 
   3:5 
   Число ітерацій циклу 3 
   Трохи змінимо наш скрипт: 
      $ I = 1; 
   while ($ i) { 
    $ N = rand (1,10); 
    / / Генеруємо довільне число 
    / / Від 1 до 10 
    switch ($ n) { 
    case 5: 
    echo " 
    Вихід з switch (n = $ n) "; 
    break 1; 
   / / Припиняємо роботу switch 
    / / (Перший містить break циклу) 
    case 10: 
    echo " 
   Вихід з switch і 
   while (n = $ n) "; 
    break 2; 
   / / Припиняємо роботу switch і while 
    / / (Два містять break циклів) 
    default: 
    echo "switch працює (n = $ n),"; 
   } 
   echo "while працює - крок $ i
"; 
   $ I + +; 
   } 
   echo "
Число ітерацій циклу $ i"; 
   ?>




continue

   Іноді потрібно не повністю припинити роботу циклу, а тільки почати його нову ітерацію. Оператор continue дозволяє пропустити подальші інструкції з блоку_виконання будь-якого циклу і продовжити виконання з нового кола. continue можна використовувати з числовим аргументом, який вказує, скільки його керуючих конструкцій повинні завершити роботу.

   Замінимо в прикладі попереднього параграфа оператор break на continue. Крім того, обмежимо кількість кроків циклу трьома. 
      $ I = 1; 
   while ($ i <= 4) { 
    $ N = rand (1,10); 
   / / Генеруємо довільне число 
   / / Від 1 до 10 
    echo "$ i: $ n"; 
   / / Виводимо номер ітерації і 
    / / Згенероване число 
    if ($ n == 5) { 
    echo "Нова ітерація
"; 
    continue; 

   / * Якщо було створене число 5, 
   то починаємо нову ітерацію циклу, 
   $ I не збільшується * / 
    } 
    echo "Цикл працює
"; 
    $ I + +; 
   } 
   - $ I; 
   echo "
Число ітерацій циклу $ i"; 
   ?> 
   Результатом роботи цього скрипта буде 
   1:10 Цикл працює 
   2:5 Нова ітерація 
   2:1 Цикл працює 
   3:1 Цикл працює 
   Число ітерацій циклу 4

   Зауважимо, що після виконання оператора continue робота циклу не закінчується. У прикладі лічильник циклу не змінюється в разі отримання числа 5, оскільки він перебуває після оператора continue. Фактично за допомогою continue ми намагаємося уникнути ситуації, коли буде створене число 5. Тому можна було просто написати, замінивши оператор continue на перевірку істинності висловлювання: 
      $ I = 1; 
   while ($ i <4) { 
    $ N = rand (1,10); 
   / / Генеруємо довільне число 
    / / Від 1 до 10 
    if ($ n! == 5) { 
    echo "$ i: $ n
"; 
   / / Виводимо номер ітерації 
    / / І згенероване число 
    $ I + +; 
    } 
   } 
   ?>

   У PHP існує одна особливість використання оператора continue - в конструкціях switch він працює так само, як і break. Якщо switch знаходиться всередині циклу й треба почати нову ітерацію циклу, слід використовувати continue 2.




^ Оператори включення

include

   Оператор include дозволяє включати код, що міститься у вказаному файлі, і виконувати його стільки разів, скільки програма зустрічає цей оператор. Включення може здійснюватися будь-яким з перерахованих способів:

include 'ім'я_файлу'; 
include $ file_name; 
include ("ім'я_файлу");

   Приклад 16. Нехай у файлі params.inc у нас зберігається набір якихось параметрів і функцій. Кожного разу, коли нам потрібно буде використовувати ці параметри (функції), ми будемо додавати до тексту нашої основної програми команду include 'params.inc'. 
   params.inc 
      $ User = "Вася"; 
   $ Today = date ("d.m.y"); 
   / * Функція date () повертає дату 
   і час (тут - дату в форматі 
   день.місяць.рік) * / 
   ?> 

   include.php    include ("params.inc"); 
   / * Змінні $ user і $ today задані у файлі 
   params.inc. Тут ми теж можемо ними 
   користуватися завдяки команді 
   include ("params.inc") * / 

   echo "Привіт, $ user!
"; 
    / / Виведе "Привіт, Вася!" 
   echo "Сьогодні $ today"; 
    / / Виведе, наприклад, "Сьогодні 24.01.11" 
   ?> 
Приклад 16. Використання оператора включення include

   Зауважимо, що використання оператора include еквівалентно простий вставці змістовної частини файлу params.inc в код програми include.php. Може бути, тоді можна було в params.inc записати простий текст без жодних тегів, які вказують на те, що це php-код? Не можна! Справа в тому, що в момент вставки файлу відбувається перемикання з режиму обробки PHP в режим HTML. Тому код всередині включається у файл, який потрібно обробити як PHP-скрипт, повинен бути укладений у відповідні теги.

^ Пошук файлу для вставки відбувається за такими правилами.

  1. Спочатку ведеться пошук файлу в include_path щодо поточної робочої директорії.

  2. Якщо файл не знайдений, то пошук виконується в include_path щодо директорії поточного скрипта.

  3. Параметр include_path, визначається у файлі налаштувань PHP, задає імена директорій, в яких потрібно шукати файли, що включаються.

   Наприклад, ваш include_path це. (Тобто поточна директорія), поточна робоча директорія це / www /. В основний файл include.php ви включаєте файл my_dir / a.php, який у свою чергу включає b.php. Тоді парсер насамперед шукає файл b.php в директорії / www /, і якщо такого немає, то в директорії / www / my_dir /.

   Якщо файл включений з допомогою include, то що міститься в ньому код успадковує область видимості змінних рядки, де з'явився include. Будь-які змінні викликаного файлу будуть доступні в файлі з цього рядка і далі. Відповідно, якщо include з'являється всередині функції файла, який викликає, то код, що міститься в викликаному файлі, буде вести себе так, як ніби він був визначений всередині функції. Таким чином, він успадкує область видимості цієї функції. Хоча ми і не знайомилися ще з поняттям функції, все ж наводимо тут ці відомості в розрахунку на інтуїтивне його розуміння.

   Приклад 17. Нехай файл для вставки params.inc залишиться таким же, а include.php буде наступним: 
      function Footer () { 
    / / Оголошуємо функцію з ім'ям Footer 
    include ("params.inc"); 
   / * Включаємо файл params.inc. 
    Тепер його змінними можна користуватися, 
    але тільки всередині функції * / 
    $ Str = "Сьогодні: $ today
"; 
    $ Str .= "    href = 'mailto: help@intuit.ru'> Сторінку 
    створив $ user "; 
    echo "$ str"; 
   } 
   Footer (); 
    / / Викликаємо функцію Footer (). Отримаємо: 
   / / Сьогодні: 08.07.05 
   / / Сторінку створив Вася 

   echo "$ user, $ today"; 
    / / Виведе кому, так як 
    / / Ці змінні видно тільки 
   / / Всередині функції 
   ?> 
Приклад 17. Область видимості при використанні include

   Крім локальних файлів, за допомогою include можна включати і зовнішні файли, вказуючи їх url-адреси. Дана можливість контролюється директивою url_fopen_wrappers у файлі налаштувань PHP і за замовчуванням, як правило, включена. Але у версіях PHP для Windows до PHP 4.3.0 ця можливість не підтримується зовсім, незалежно від url_fopen_wrappers.

   include () - це спеціальна мовна конструкція, тому при використанні всередині умовних блоків її потрібно укладати у фігурні дужки. 
      / * Це невірний запис. Отримаємо помилку. 
    Ми ж вставляємо не одну команду, 
   а декілька, вони тільки записані 
   в іншому файлі * / 
   if ($ condition) include ("first.php"); 
   else include ("second.php"); 
   / / А ось так правильно. 
   if ($ condition) {include ("first.php");} 
   else {include ("second.php");} 
   ?> 
Приклад 18. Використання include ()

   При використанні include можливо два види помилок - помилка вставки (наприклад, не можна знайти вказаний файл, невірно написана сама команда вставки тощо) або помилка виконання (якщо помилка міститься у файлі, що вставляється). У будь-якому випадку при помилці в команді include виконання скрипта не завершується.




require

   Цей оператор діє приблизно так само, як і # include в C + +. Все, що ми говорили про include, лише за деякими винятками, справедливо і для require. require також дозволяє включати в програму і зробити який-небудь файл. Основна відмінність require і include полягає в тому, як вони реагують на виникнення помилки. Як вже говорилося, include видає попередження, і робота скрипта триває. Помилка в require викликає фатальну помилку роботи скрипта і припиняє його виконання.

   Умовні оператори на require () не впливають. Хоча, якщо рядок, в якій з'являється цей оператор, не виконується, то жоден рядок коду з файлу теж не виконується. Цикли також не впливають на require (). Хоча код, що міститься у файлі, що вставляється, є об'єктом циклу, але вставка сама по собі відбувається тільки один раз.

   У реалізаціях PHP до версії 4.0.2 використання require () означало, що інтерпретатор обов'язково спробує прочитати файл.

   require, як і include, при використанні всередині умовних блоків потрібно укладати у фігурні дужки.




^ Альтернативний синтаксис

   PHP пропонує альтернативний синтаксис для деяких своїх керуючих структур, а саме для if, while, for, foreach і switch. У кожному разі відкриваючу дужку потрібно замінити на двокрапку (:), а закриваючу - на endif;, endwhile, і т.д. відповідно.

   Наприклад, синтаксис оператора if можна записати таким чином: 
   if (вираз): блок_виконання endif;

   Сенс залишається тим же: якщо умова, що записана в круглих дужках оператора if, виявилась істиною, буде виконуватися весь код, від двокрапки ":" до команди endif;. Використання такого синтаксису корисно при вбудовуванні php в html-код. 
      $ Names = array ("Іван", "Петро", "Семен"); 
   if ($ names [0] == "Іван"): 
   ?> 
   Привіт, Ваня! 
      endif;?> 
Приклад 19. Використання альтернативного синтаксису

   Якщо використовуються конструкції else і elseif, то також можна задіяти альтернативний синтаксис: 
      $ A = 1; 
   if ($ a == 5): 
    print "a одно 5"; 
    print "..."; 
   elseif ($ a == 6): 
    print "a дорівнює 6"; 
    print "!!!"; 
   else: 
    print "a не дорівнює ні 5, ні 6"; 
   endif; 
   ?>




^ Функції, визначені користувачем

   Для чого потрібні функції? Щоб відповісти на це питання, потрібно зрозуміти, що взагалі являють собою функції. У програмуванні, як і в математиці, функція є відображення безлічі її аргументів на безліч її значень. Тобто функція для кожного набору значень аргументу повертає якісь значення, що є результатом її роботи. Навіщо потрібні функції, спробуємо пояснити на прикладі. Класичний приклад функції у програмуванні - це функція, що обчислює значення факторіала числа. Тобто ми ставимо їй число, а вона повертає нам його факторіал. При цьому не потрібно для кожного числа, факторіал якого ми хочемо отримати, повторювати один і той самий код - досить просто викликати функцію з аргументом, рівним цьому числу.

^ Функція обчислення факторіала натурального числа


       function fact ($ n) { 
    if ($ n == 0) return 1; 
    else return $ fact = $ n * fact ($ n-1); 
   } 
   echo fact (3); 
    / / Можна було б написати echo (3 * 2); 
    / / Але якщо число велике, 
   echo fact (50); 
    / / То зручніше користуватися функцією, 
    / / Чим писати echo (50 * 49 * 48 *...* 3 * 2); 
   ?>

   Таким чином, коли ми здійснюємо дії, в яких простежується залежність від будь-яких даних, і при цьому, можливо, нам знадобиться виконувати такі ж дії, але з іншими вихідними даними, зручно використовувати механізм функцій - оформити блок дій у вигляді тіла функції, а змінні дані - як її параметр.

   Подивимося, як у загальному вигляді виглядає завдання (оголошення) функції. Функція може бути визначена за допомогою наступного синтаксису: 
   function Імя_функціі (параметр1, параметр2, 
    ... параметрN) { 
    Блок_дій 
    return "значення повертається функцією"; 
   }

   Якщо прямо так написати в php-програмі, то працювати нічого не буде. По-перше, Імя_функції і імена параметрів функції (параметр1, параметр2 і т.д.) повинні відповідати правилам найменування в PHP (і російських символів у них краще не використовувати). Імена функцій нечутливі до регістру. По-друге, параметри функції - це змінні мови, тому перед назвою кожної з них повинен стояти знак $. Ніяких крапок ставити в списку параметрів не можна. По-третє, замість слів блок_дій в тілі функції повинен знаходитися будь-який правильний PHP-код (не обов'язково залежати від параметрів). І нарешті, після ключового слова return має йти коректний php-вираз (що-небудь, що має значення). Крім того, у функції може і не бути параметрів, як і значення, що повертається. Приклад правильного оголошення функції - функція обчислення факторіала, наведена вище.

   Як відбувається виклик функції? Вказується ім'я функції і в круглих дужках список значень її параметрів, якщо такі є: 
        Імя_функції ("значеніе_для_параметра1", 
    "Значеніе_для_параметра2 ",...); 
    / / Приклад виклику функції - виклик функції 
    / / Обчислення факторіала наведено вище, 
    / / Там для обчислення факторіала числа 3 
    / / Ми писали: fact (3); 
    / / Де fact - ім'я викликається функції, 
    / / А 3 - значення її параметра з ім'ям $ n 
    ?>

   Коли можна викликати функцію? Здавалося б, дивне запитання. Функцію можна викликати після її визначення, тобто в будь-якому рядку програми нижче блоку function f_name (){...}. У PHP3 це було дійсно так. Але вже в PHP4 такої вимоги немає. Вся справа в тому, як інтерпретатор обробляє одержуваний код. Єдиний виняток становлять функції, які визначаються умовно (всередині умовних операторів або інших функцій). Коли функція визначається таким чином, її визначення повинно передувати її викликом. 
      $ Make = true; 
   / * Тут не можна викликати Make_event (); 
   тому що вона ще не існує, але можна 
   викликати Save_info () * / 

   Save_info ("Вася", "Іванов", 
    "Я вибрав курс по PHP"); 

   if ($ make) { 
   / / Визначення функції Make_event () 
    function Make_event () { 
    echo "
Хочу вивчати Python
"; 
    } 
   } 
   / / Тепер можна викликати Make_event () 
   Make_event (); 
   / / Визначення функції Save_info 
   function Save_info ($ first, $ last, $ message) { 
    echo "
$ message
"; 
    echo "Ім'я:". $ First. "". $ Last. "
"; 
   } 
   Save_info ("Федя", "Федоров", 
    "А я вибрав Lisp"); 
   / / Save_info можна викликати і тут 
   ?> 
Приклад 20. Визначення функції всередині умовного оператора

   Якщо функція одного разу визначена в програмі, то перевизначити або видалити її пізніше не можна. Незважаючи на те, що імена функцій нечутливі до регістру, краще викликати функцію з того ж імені, яким вона була задана у визначенні. 
      / * Не можна зберегти дані, тобто викликати 
   функцію DataSave () до того, як виконана 
   перевірка їх правильності, тобто викликана 
   функція DataCheck () * / 

   DataCheck (); 
   DataSave (); 

   function DataCheck () { 
   / / Перевірка правильності даних 
    function DataSave () { 
    / / Зберігаємо дані 
    } 
   } 
   ?> 
Приклад 21. Визначення функції усередині функції

   Розглянемо докладніше аргументи функцій, їх призначення та використання.




^ Аргументи функцій

   У кожній функції може бути список аргументів. За допомогою цих аргументів у функцію передається різна інформація (наприклад, значення числа, факторіал якого треба підрахувати). Кожен аргумент являє собою змінну або константу.

   За допомогою аргументів дані у функцію можна передавати трьома різними способами. Це передача аргументів за значенням (використовується за замовчуванням), по посиланню й завдання значення аргументів за замовчуванням. Розглянемо ці способи докладніше.

   Коли аргумент передається у функцію за значенням, зміна значення аргументу всередині функції не впливає на його значення поза функції. Щоб дозволити функції змінювати її аргументи, їх потрібно передавати по посиланню. Для цього у визначенні функції перед ім'ям аргументу слід написати знак амперсанд «&». 
      / / Напишемо функцію, яка б додавала 
   / / К рядку слово checked 
   function add_label (& $ data_str) { 
    $ Data_str .= "checked"; 
   } 
   $ Str = "    / / Нехай є такий рядок 
   echo $ str. ">
"; 
    / / Виведе елемент форми - 
    / / Не зазначену радіо кнопку 
   add_label ($ str); 
    / / Викличемо функцію 
   echo $ str. ">
"; 
    / / Це виведе вже зазначену 
    / / Радіо кнопку 
   ?> 
Приклад 22. Передача аргументів за посиланням

   У функції можна визначати значення аргументів, які використовуються за замовчуванням. Саме значення за умовчанням має бути константним виразом, а не змінною і не представником класу або викликом іншої функції.

   У нас є функція, яка створює інформаційне повідомлення, підпис до якого змінюється в залежності від значення переданого їй параметра. Якщо значення параметра не задано, то використовується підпис "Оргкомітет". 
      function Message ($ sign = "Оргкомітет.") { 
   / / Тут параметр sign має за замовчуванням значення "Оргкомітет" 
    echo "Наступне зібрання відбудеться завтра.
"; 
    echo $ sign. "
"; 
   } 
   Message (); 
    / / Викликаємо функцію без параметра. 
    / / У цьому випадку підпис - це Оргкомітет 
   Message ("З повагою, Вася"); 
    / / У цьому випадку підпис 
    / / Буде "З повагою, Вася." 
   ?> 
   Приклад 23. Значення аргументів за замовчуванням

   Результатом роботи цього скрипта буде: 
   Наступне зібрання відбудеться завтра. 
   Oргкомітет. 
   Наступне зібрання відбудеться завтра. 
   З повагою, Вася.

   Якщо у функції декілька параметрів, то ті аргументи, для яких задаються значення за замовчуванням, повинні бути записані після всіх інших аргументів у визначенні функції. В іншому випадку з'явиться помилка, якщо ці аргументи будуть опущені при виклику функції.

   Наприклад, ми хочемо внести опис статті в каталог. Користувач повинен ввести такі характеристики статті, як її назва, автор та короткий опис. Якщо користувач не вводить ім'я автора статті, вважаємо, що це Іванов Іван.
      function Add_article ($ title, $ description, 
    $ Author = "Іванов Іван") { 
    echo "Заносимо в каталог статтю: $ title,"; 
    echo "автор $ author"; 
    echo "
Короткий опис:"; 
    echo "$ description

1   2   3

Схожі:

Програма Основний синтаксис icon«Методи, моделі та інформаційні технології в управлінні соціально-економічними, екологічними та технічними системами»
Основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний...
Програма Основний синтаксис iconНазва статті прізвище та ініціали
Основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний...
Програма Основний синтаксис iconВступ 5 1 огляд існуючих рішень 6
...
Програма Основний синтаксис iconНазва проекту (назва ідеї)
Основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний...
Програма Основний синтаксис iconНазва проекту (назва ідеї)
Основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний...
Програма Основний синтаксис iconНазва статті
Основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний текст основний...
Програма Основний синтаксис iconНазва Ім’я Прізвище
Основний текст Основний текст Основний текст Основний текст Основний текст Основний текст Основний текст Основний текст Основний...
Програма Основний синтаксис iconСтилістичний синтаксис Яра Славутича
Пентилюк М.І. Стилістичний синтаксис Яра Славутича // Вісник Таврійської фундації (Осередку вивчення української діаспори): Літературно-науковий...
Програма Основний синтаксис icon«затверджую» Ректор С. В. Савченко 2012 р. Програма
Прийменник. Сполучник 10. Синтаксис. Типи речень. Підмет 11. Присудок у реченні
Програма Основний синтаксис iconДокументи
1. /Синтаксис. Просте речення Word.doc
2. /Синтаксис....

Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи