Тема: елементи подійно-орієнтованого програмування мовою PHP
Мета:
Обладнання: ПК із встановленими ОС і веб-сервером на локальному ПК (наприклад, MS Windows + Denwer) або зареєстрованим хостингом.
Структура уроку
Хід уроку
1. Організаційний момент
Привітання з учнями. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання. Оголошення теми й мети уроку.
2. Актуалізація опорних знань
У мові PHP використовують і процедурне, і об'єктно-орієнтовне програмування.
Процедурне програмування засноване на виклику процедур (підпрограм, функцій, методів), кожна з яких описує певний алгоритм і кожну з яких можна викликати з будь-якого місця програми.
Об'єктно-орієнтовне програмування (ООП) робить наголос на поняттях об'єкт, властивості, методи, події. З появою ООП з'явилися такі терміни: клас, наслідування, поліморфізм, інкапсуляція — див. опис.
Змінну потрібного типу (об'єкт) у програмі мовою PHP створюють з класу за допомогою оператора new. Створивши об'єкт, до нього можна застосувати всі методи і отримати всі його властивості, визначені в описі класу.
Опис класу у мові РНР:
class Назва_класу { var $назва_властивості; /*перелік назв властивостей*/ function назва_методу() {/*визначення методу*/ } /*опис методів*/ }
Наприклад, код:
<?php class Person /* cтворення (опис) класу людей */ { function know_php () { echo "Тепер я вчу PHP!"; } } $Bob = new Person; /* створення об'єкту Bob з класу людина */ $Bob -> know_php (); /* застосування методу до створеного об'єкту */ ?>
дає такий результат:
Тепер я вчу PHP!
А цей код:
<?php class Plane { public $silvery_board = 'Сріблястий літачок'; public $white_board = 'Білий літачок'; function What_the_plane () {echo ' Клас '.get_class($this);} function turn_on_engine () {echo ' Завів двигун';} function speed_on() {echo ' Збільшив швидкість';} function fly_to_sky() {echo ' Полетів';} }; $A747 = new Plane; echo "Властивість об'єкту ". $A747 -> silvery_board; // методи обєкту $A747 -> What_the_plane (); $A747 -> turn_on_engine (); $A747 -> speed_on(); $A747 -> fly_to_sky(); ?>
дає такий результат:
Властивість об'єкту Сріблястий літачок Клас Plane Завів двигун Збільшив швидкість Полетів
В основі ООП лежать поняття класу й наслідування та багаторазове використання одного й того самого коду. Наприклад, такий код:
<?php class First { public $a; //досяжний з будь якого-місця програми protected $b; //досяжний з класу власника й нащадків private $c; //досяжний лише з класу власника public function __construct() //конструктор класу, { $this->SetA(1); //викликають при створенні об'єкта класу } public function SetA($in_a) //запис у параметр класу значення, { $this->a = $in_a; //переданого при виклику методу } public function GetA() //виведення значення параметра класу { echo $this->a.' '; } public function __destruct() //деструктор класу для знищення об'єкта { echo 'obj is close'; } } $test = new First(); //створення екземпляру класу $test->GetA(); $test->SetA(4); $test->GetA(); ?>
дає такий результат:
1 4 obj is close
Успадкування (наслідування)
З класу можна створити «підклас» — спеціалізовану, розширену версію класу — за допомогою вказівки extends. Можна утворити цілі дерева успадкування. Підкласи успадковують властивості й поведінку своїх батьківських класів, і можуть мати свої власні. Успадкування може бути одиничне (один безпосередній батьківський клас) та множинне (кілька батьківських класів). Це залежить і від вибору програміста, і від мови програмування. Наприклад, у Java дозволено лише одинарне успадкування, а в С++ — і те, й інше.
Наслідують параметри й методи класу з ідентифікаторами доступу public і protected. При потребі батьківський конструктор або деструктор викликають дочірньому класі з допомогою вказівки parent:: Можна перевизначити наявні параметри й методи батьківського класу, можна залишити їх без змін, можна додати нові:
<?php class First { public $a; protected $b; private $c; public function __construct(){$this->SetA(1);} public function SetA($in_a) {$this->a = $in_a;} public function GetA() {echo $this->a.' ';} public function __destruct() {echo 'obj is close';} } class Third extends First //створення нащадка класу First { public function __construct() //переозначення конструктора { parent::__construct(); //виклик конструктора батьківського класу $this->b = 700; //змінити значення властивості класу } public function SetA($in_a) //переозначення методу { $in_a = $in_a*2; parent::SetA($in_a); } public function GetB() //опис нового методу { echo $this->b.' '; } } $test = new Third(); //створення екземпляру класу $test->GetA(); // результат 2 $test->GetB(); // результат 700 $test->SetA(4); $test->GetA(); // результат 8 $test->GetB(); // результат 700 ?>
3. Вивчення нового матеріалу
Подія — зміна властивостей об'єкта, взаємодія між об'єктами, утворення нового об'єкта або знищення наявного об'єкта — може бути породжена програмою або користувачем (наприклад, натисканням клавіш на клавіатурі чи кнопок миші). Програмне забезпечення може викликати свій власний набір подій у цикл обробки подій, наприклад, повідомляти про завершення завдання. Деякі програми кардинально змінюють свою поведінку у відповідь на винекнення подій. Такі програми називають подійно-орієнтованими.
Працюючи у різних середовищах користувач звикає, що вибір (натискання) кнопки завжди приводить до настання певної події: відкриття або закриття певного вікна, змінення значень властивостей певних об’єктів, переміщення певного об’єкта тощо. Але наявності самої кнопки недостатньо, щоб за її вибору щось відбулося. Програмі потрібно «повідомити» про подію, що відбудеться за вибору об'єкта. І програма має містити фрагмент, який буде виконано після настання цієї події. Відповідну частину програми називають обробником події. Якщо обробник події пов’язано з певним об’єктом, його називають методом цього об’єкта.
Сучасні веб-ресурси не лише надають інформацію, але і взаємодіють з користувачем. Одною із важливих функцій РНР є передавання значень змінних із форм HTML та їхнє опрацювання. Передавання змінних між формами і сторінками — це саме та інтерактивність, заради якої використовують PHP. Тому ми зосередимося лише на подіях передавання (отримування) даних.
Щоб взаємодіяти з користувачем потрібно отримувати деякі дані від нього. Для цього використовують, наприклад, методи GET і POST. У PHP передбаченно підтримку цих методів передавання даних. Розглянемо, як працюють ці методи.
Метод GET розглянемо на прикладі веб-сторінки, на якій:
Дані буде опрацьовано програмою 1.php за допомогою методу GET:
<?php if (! empty ($_GET [ "name"]) &&! empty ($_GET [ "age"])) {echo "Отримано нові вхідні: ім'я -". $_GET [ "name"]. ", вік - ". $_GET [" age "]." років ";} else {echo" Змінні не дійшли. Перевірте все ще раз. "; } ?>
За допомогою умовного оператора перевірено, чи змінні name і age порожні. Якщо вони не порожні, то їх виведено, інакше повідомлено про це.
Метод POST розглянемо на прикладі веб-сторінки.
Цей метод використовують лише у формі:
Параметр форми method визначає метод, який використовують для передачі даних: або GET, або POST. Якщо встановлено GET, то всі назви полів (назви змінних) та їхні значення передають за посиланням (див. вище). Якщо встановлено POST, то всі назви змінних і значення буде передано як запит браузера до веб-сервера. Тобто в адресному рядку їх видно не буде. У багатьох випадках це дуже корисно. POST вважають безпечнішим, бо змінні з їхніми значеннями вже не так просто змінити, хоча також можливо.
Параметр форми action — шлях до файлу скрипта php, який буде опрацьовувати дані. Цей шлях можна вказати і повністю:
action = "http://mysite.ua/index.php"
Якщо не вказати значення параметра action, то всі дані буде передано головному скрипту.
Опрацювання даних з форми можна здійснити таким кодом:
<?php if (! empty ($ _ POST [ "user_name"]) &&! empty ($ _ POST [ "age"])) { echo "Отримано нові вхідні: <br>"; echo "ім'я -"; echo $ _POST [ "user_name"]; echo "<br> вік -"; echo $ _POST [ "age"]; echo "років"; } else { echo "Дані не надійшли. Перевірте все ще раз."; } ?>
4. Закріплення вивченого матеріалу
Коли доцільно використовувати POST?
Дані, надіслані за допомогою методу POST, невидимі для інших, бо всі назви і значення вбудовано у тіло запиту HTTP. При цьому не обмежено обсяг інформації, яку надсилають. У цьому випадку змінні не відображено в URL-адресі, тому неможливо закріпити сторінку. Зазвичай розробники віддають перевагу POST для надсилання даних форми.
Описати дію коду:
<form action = "formular.php" method = "POST"> <input type = "reset" value = "очистити" > <input type = "submit" value = "відправити"><br><br> <input type ="text" name = "name"> Ім'я <br> <input type ="text" name = "number"> Номер </form> <?php $namber = $_POST["number"]; if (($_POST=="number") || (($number)<1)) {echo "Поле номер не заповнено";} else {echo $number;} ?>
5. Підведення підсумків уроку
Оцінювання результату роботи учнів.
6. Домашнє завдання
Вивчити навчальний матеріал уроку. Створити форму за поданим зразком та написати до неї сценарій мовою PHP. Пояснити, який метод використовувася при передачі даних. Відповідь обгрунтуйте.
Корисні посилання
Текст упорядкувала Дуга Ірина Сергіївна, вчитель спеціалізованої школи №53 І-ІІІ ступенів з поглибленим вивченням німецької мови міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 30.10.2017 по 03.11.2017.