Файл: Опорний конспект.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.05.2024

Просмотров: 195

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

1. Історія php

2. Можливості php

3. Установка і настройка по

3.1. Установка Apache 1.3.29 під Windows xp

3.2. Установка php 4.3.4 під Windows

1. Основний синтаксис

1.1 Розділення інструкцій

1.2 Коментарі

2. Змінні, константи і оператори

2.3 Константи

2.4 Оператори

1.2 Оператор else

1.3 Оператор elseif

1.4 Оператор switch

2 Цикли

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

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

4. Лекція

2 Типи серверів

3 Протокол http і способи передачі даних на сервер

4 Методи

5 Використання html-форм для передачі даних на сервер

5. Лекція:

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

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

3 Списки аргументів змінної довжини

4 Статичні змінні

5 Значення, що повертаються

6 Повернення посилання

7 Внутрішні (убудовані) функції

6. Лекція:

2 Ініціалізація змінних

4 Спадкування extends

5 Оператор ::

6 Оператор parent

7. Лекція:

1 Масиви

2 Операції з масивами

3 Функції обробки масивів

4 Сортування масивів

5 Виділення підмасива

8. Лекція:

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

<?

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, що складається із трьох змінних, утримуючі характеристики статті, і двох функцій для створення конкретної статті й для її відображення.

Як відомо, працюючи з PHP, можна періодично перемикатися в режим HTML. У цьому випадку програма складається з декількох фрагментів (блоків) коду. Визначення класу не можна розносити по різних блоках php-коду й тим більше по різних файлах.

Кілька зауважень із приводу імен класів. Ім’я класу повинне задовольняти правилам іменування об’єктів у мові PHP, але є ряд імен, які зарезервовані розробниками для своїх цілей. У першу чергу це імена, що починаються із символу підкреслення "_". Для створення класів і функцій не можна використати такі імена. Крім того, зарезервоване ім’я stdClass, оскільки воно використається усередині движка PHP.


2 Ініціалізація змінних

Часто деяким атрибутам класу буває необхідно привласнювати значення відразу після створення представника класу. Коли ми створювали клас статей, для присвоювання значень атрибутам ( властивостям ) класу ми використали спеціальну функцію make_article(). Загалом кажучи, ми вчинили не зовсім вірно, тому що зайнялися винаходом велосипеда. Спеціально для завдання початкових значень атрибутам класу існує два стандартних методи. В PHP4 можна ініціалізувати значення за допомогою оператора var або за допомогою функції конструктора. За допомогою var можна ініціалізувати тільки константні значення. Для завдання не константних значень використовують функцію конструктор, що викликається автоматично, коли об’єкт конструюється із класу. Функція-конструктор повинна мати ім’я, що збігається з ім’ям усього класу, у якому вона визначена.

Приведемо приклад. Допустимо, при створенні об’єкта "стаття" ми хочемо встановити його властивості в такий спосіб: автора - рівним рядку "Іванов", назва й короткий зміст - відповідним елементам глобального масиву $_POST, а дату публікації статті - поточній даті.

<?

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

var $title;

var $author = "Іванов";

var $description;

var $published;

// метод, що привласнює значення атрибутам класу

function Articles(){

$this->title = $_POST["title"];

$this->description = $_POST["description"];

$this ->published = date("Y-m-d"); }

}

?>

В PHP5 конструктор класу йменується __construct. Крім того, в PHP5 з’явилися й деструктори - функції, які викликаються автоматично перед знищенням об’єкта. В PHP5 функція-деструктор повинна бути названа __destruct.

3 Об’єкти

В одній з перших лекцій ми згадували про існування в PHP такого типу даних, як об’єкт. Клас - це опис даних одного типу, даних типу об’єкт. Класи є ніби шаблонами для реальних змінних. Змінна потрібного типу створюється із класу за допомогою оператора new. Створивши об’єкт, ми можемо застосовувати до нього всі методи й одержувати всі властивості, наявні в описі класу. Для цього використовують такий синтаксис:

$ім’я_об’єкта->назва_властивості

або

$ім’я_об’єкта->назва_методу (список аргументів).

Помітимо, що перед назвою властивості або методу знак $ не ставлять.


<?php

$art = new Articles;

// створюємо об’єкт $art

echo ($art ->title);

// виводимо назва об’єкта $art

$another_art = new Articles;

// створюємо об’єкт $another_art

$another_art->show_article();

// викликаємо метод для відображення об’єкта в браузер

?>

Приклад 6.1. Доступ до методів і властивостей об’єкта

Кожний з об’єктів класу має ті самі властивості й методи. Так, в об’єкта $art й в об’єкта $another_art є властивості title, description, author і методи Articles(), show_article(). Але це два різних об’єкти. Уявимо собі об’єкт як директорію у файловій системі, а його характеристики - як файли в цій директорії. Очевидно, що в кожній директорії можуть лежати однакові файли, але проте вони вважаються різними, оскільки зберігаються в різних директоріях. Точно так само властивості й методи вважаються різними, якщо вони застосовуються до різних об’єктів. Щоб одержати потрібний файл із директорії верхнього рівня, ми пишемо повний шлях до цього файлу. При роботі із класами потрібно вказувати повне ім’я функції, що ми хочемо викликати. Директорією верхнього рівня в PHP буде простір глобальних змінних, а шлях указується за допомогою роздільника ->. Таким чином, імена $art->title й $another_art->title позначають дві різні змінні. Змінна в PHP має тільки один знак долара перед ім’ям, тому не можна писати $art->$title. Ця конструкція буде розглянуте не як звертання до властивості title об’єкта $art, а як звертання до властивості, ім’я якого задано змінної $title (наприклад, $art->"" ).

<?php

$art->title = "Введення в Internet";

// так можна встановити значення властивості об’єкта

$art->$title = "Введення в Internet";

// так не можна встановити значення властивості об’єкта

$property = "title";

$art->$property = "Введення в Internet";

// так можна встановити значення властивості об’єкта

?>

Приклад 6.2. Установка значень властивостей

Створюючи клас, ми не можемо знати, яке ім’я буде мати об’єкт цього класу, тим більше що об’єктів може бути багато й усі можуть мати різні імена. Відповідно ми не знаємо, як звертатися до об’єкта усередині визначення класу. Для того щоб мати доступ до функцій і змінним усередині визначення класу, потрібно використати псевдозмінну $this. Наприклад, $this->title повертає значення властивості title у поточного об’єкта даного класу. Іноді цю змінну пропонують читати як "моє власне" (приміром, стосовно властивості ).



4 Спадкування extends

Механізм спадкування - дуже важлива частина всього об’єктно-орієнтованого підходу. Спробуємо пояснити його суть на прикладі.

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

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

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

Як це можна реалізувати? За допомогою механізму розширень. Будь-який клас може бути розширенням іншого класу. Розширювальний (або похідний) клас, крім тих властивостей і методів, які описані в його визначенні, має всі функції й властивості основного ( базового класу ). У нашому прикладі клас програмістів - розширений, а клас всіх людей - базовий. Із класу не можна видалити ніякі існуючі властивості й функції, клас можна тільки розширити. Розширюються класи в PHP за допомогою ключового слова extends.

<?php

class Person { // визначаємо клас Особа

var $first_name; // ім’я особи

var $last_name; // прізвище особи

function make_person($t,$a){

// метод установлює значення імені й прізвища об’єкта

$this->first_name = $t;

$this->last_name = $a; }

function show_person(){

// метод відображає інформацію про осіб

echo ("<h2>" . $this->first_name . " " .

$this->last_name . "</h2>"); }

}

class Programmer extends Person{