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

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

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

Добавлен: 18.05.2024

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

Скачиваний: 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. Основний синтаксис

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. Лекція:

2 Запис даних у файл

3 Читання даних з файлу

4 Перевірка існування файлу

5 Видалення файлу

6 Завантаження файлу на сервер

10. Лекція:

1 Бази даних: основні поняття

2 Ключі

3 Індексація

4 Субд MySql

5 Язик sql

6 Основні оператори язика sql

6.1 Оператор create table

6.2 Оператор drop table

6.3 Оператор alter table

7 Оператор select

8 Оператор insert

9 Оператор update

10 Оператор delete

11. Лекція:

1 Побудова інтерфейсу для додавання інформації

2 Запис даних в базу даних

3 Відображення даних, що зберігаються в MySql

1 Побудова інтерфейсу для додавання інформації

2 Запис даних в базу даних

3 Відображення даних, що зберігаються в MySql

12. Лекція:

2 Механізм сесій

3 Настройка сесій

4 Робота з сесіями

4.1 Створення сесії

4.2 Реєстрація змінних сесії

4.3 Видалення змінних сесії

5 Безпека

5 Оператор ::

Іноді усередині опису класу виникає необхідність послатися на функції або змінні з базового класу. Буває, що потрібно посилатися на функції в класі, жоден представник якого ще не створений. Як бути в такому випадку? В PHP4 для цього існує спеціальний оператор "::"

Наприклад, от так можна викликати в описі класу Programmer функцію show_name() з базового класу Person і функцію say_hello(), задану в описі класу Programmer, коли жоден об’єкт цього класу ще не був створений:

<?php

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

var $first_name;

var $last_name;

function Person($t,$a){ // конструктор

$this->first_name = $t;

$this->last_name = $a; }

function show_name(){

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

echo ("Мене звуть, " . $this->first_name . " " . $this->last_name . "!<br>");}

}

class Programmer extends Person{

// визначаємо клас Programmer, що розширює Person

function set_lang($new_lang){

// метод додає ще одну мову до списку відомих

$this->langs[] = $new_lang;

Person::show_name();

// викликаємо функцію з базового класу

echo "И я знаю тепер ще й " . $new_lang; }

function show_name(){

echo ("Я програміст, " . $this->first_name . " " . $this->last_name . "!<br>");

}

function say_hello(){

echo "Привіт!<br>";

}

}

Programmer::say_hello();

// викликаємо функцію, коли ні один об’єкт її класу ще не створений

$new_progr = new Programmer("Вася","Сидоров");

$new_progr->set_lang("PHP");

?>

У результаті роботи цієї програми одержимо наступне:

Привіт!

Мене кличуть Вася Сидоров!

І я знаю тепер ще й PHP

За допомогою команди Programmer::say_hello(); ми викликаємо функцію say_hello класу Programmer як таку, а не як метод, застосовуваний до об’єкта даного класу. У цей момент змінних класу немає. Тому функції, викликувані до створення об’єкта, не можуть користуватися змінними класу й конструкцією this, але можуть користуватися локальними й глобальними змінними.

У визначенні класу Programmer ми перевизначили функцію show_name(), тому викликати функцію show_name() з базового класу Person можна тільки за допомогою оператора "::" Загалом кажучи, усередині визначення класу ми можемо викликати будь-які методи й властивості, задані в його базовому класі за допомогою звичайного $this, якщо тільки породжений клас не перевизначає ці властивості й методи, як у нашому прикладі.


6 Оператор parent

У наведеному вище прикладі, звертаючись до базового класу, ми використали його ім’я (ми писали Person::show_name() ). Це не зовсім зручно, тому що ім’я класу або ієрархія класів може змінитися, і тоді доведеться переписувати код описів всіх класів для того, щоб привести використовувані в них імена у відповідність із новою ієрархією. Щоб уникнути подібної ситуації, замість імені базового класу потрібно використати ключове слово parent (наприклад, parent::show_name() ). Parent посилається на клас, прописаний після extends в оголошенні вашого класу. Тому якщо раптом ієрархія класів зміниться, то досить буде внести зміни в імена, зазначені після extends в описах класів.

Об’єктна модель PHP5

Крім нової назви для конструкторів і появи деструкторів в PHP5 відбулося ще досить багато змін. Ми не будемо обговорювати їх докладно, тільки опишемо загалом. Основна зміна - це передача значень параметрів класу по посиланню й присвоєння об’єктів по посиланню, а не за значенням, як це було в PHP4. В PHP5 якщо створюються два рівні змінні типи об’єкт, то вони вказують на одне значення й змінюються одночасно (ми наводили схожий приклад зі змінними строкового типу). У зв’язку із цим з’явився новий механізм для створення копій об’єктів - так називане клонування. В PHP4 всі методи й змінні класу доступні ззовні, тобто вони завжди є відкритими. В PHP5 змінні й методи можна робити відкритими (доступними отовсюду), закритими (доступними тільки усередині класу ) і захищеними (доступними усередині класу й у його похідних класах ). Крім того, з’явилася можливість створювати інтерфейси й абстрактні класи й багато чого іншого. У цілому об’єктна модель в PHP5 значно вдосконалена для більше точної відповідності объектно-ориентированной парадигмі програмування.

Рішення завдання

Отже, ми хотіли на вибір користувача генерувати форму для уведення опису статті або людини й відображати дані, уведені в цю форму. Спробуємо вирішити це завдання, використовуючи объектно-ориентированный підхід. Для початку створимо форму, де користувач вибирає, що він хоче створити, - опис статті або людини (точніше, це будуть дві форми):

<form action="task1.php">

Створити опис статті: <input type=submit

name=art_create

value="Create Article">

</form>

<form action="task1.php">

Створити опис особистості: <input

type=submit name=pers_create

value="Create Person">


</form>

Тепер напишемо файл для обробки цих форм. У ньому створимо два класи - статті й особистості. У кожного класу є метод для ініціалізації його змінних і метод для відображення об’єктів даного класу. При рішенні завдання будуть використані дві функції, убудовані в PHP для роботи із класами й об’єктами. Це функція get_class (об’єкт), що повертає ім’я класу, екземпляром якого є об’єкт, переданий їй як параметр. І функція get_class_vars (ім’я класу ), що повертає масив всіх властивостей класу і їхніх значень за замовчуванням. Аналогічно можна одержати масив імен всіх методів класу: get_class_methods (ім’я класу )

<?php

/* Створюємо класи Статей й Особистостей. Стаття має заголовок, автора й опис. Особистість має ім’я, прізвище й e-mail */

class Article {

var $title;

var $author;

var $description;

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

function Article($t="Назва відсутнє",

$a="Автор відсутній",

$d="Опис відсутнє"){

$this->title = $t;

$this->author = $a;

$this->description = $d;

}

//метод для відображення екземплярів класу

function show(){

$art = "<h2>$this->title</h2><font

size=-1>$this->description</font><p>Автор:

$this->author</p>";

echo $art;

}

}

// Визначення класу Особистостей

class Person {

var $first_name;

var $last_name;

var $email;

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

function Person($t="Ім’я не уведене",

$a="Прізвище не уведене",$d="Email не зазначений"){

$this->first_name = $t;

$this->last_name = $a;

$this->email = $d;

}

//метод для відображення екземплярів класу

function show(){

$art = "<h2>$this->first_name</h2><font

size=-1>$this->last_name</font><p>e-mail:

$this->email</p>";

echo $art;

}

}

// Далі треба властиво створення й відображення екземплярів обраного класу

if (isset($_GET["art_create"])){ //Якщо була обрана стаття

$art = new Article; // створюємо представника класу статей

$art_vars = get_class_vars(get_class($art));

//які аргументи цього класу потрібно задати

Make_form($art,$art_vars,"art_create"); //виклик функції створення форми

if (isset($_GET["create_real"])){ Show_($art_vars); }


// якщо дані цієї форми відправлені, то викликаємо функцію показу

}

//т же саме, якщо була обрана особистість

if (isset($_GET["pers_create"])){

$art = new Person;

$art_vars = get_class_vars(get_class($art));

Make_form($art,$art_vars,"pers_create");

if (isset($_GET["create_real"])){ Show_($art_vars); }

}

// функція створення форми

function Make_form($art,$art_vars,$glob){

$str = "<form>"; // html код форми записується у рядок $str

//перебираємо список змінних класу об’єкта $art

foreach ($art_vars as $var_name => $var_value){

$str .="$var_name<input type=text name=$var_name><br>";

//створюємо елемент форми з ім’ям властивості класу

}

$str .= "<input type=hidden name=$glob>"; // щоб не забути, що ми створюємо

$str .= "<input type=submit name=create_real

value=‘Create and Show’></form>";

echo "$str"; // виводимо форму

}

// функція показу об’єкта

function Show_($art_vars){

global $art; //використається глобальне ім’я об’єкта

$k = count($art_vars); //число властивостей класу (змінних у формі)

$p=0; //допоміжна змінна

foreach ($art_vars as $name => $value){

$p++;

if ($_GET["$name"]=="") $val= $art->$name;

else $val = $_GET["$name"];

if ($p<>$k) $par .=‘"‘. $val.’",’;

else $par .=‘"‘. $val.’"‘;

}

$const=get_class($art);

$par = ‘$art->‘.$const ."(" .$par.");";

/* тепер $par являє собою php-код для виклику методу класу $art, споконвічно записаного в $par. наприклад, $art->Person(‘Vasia’,’Petrov’,’vas@intuit.ru’); */

eval($par); // функція eval виконує код, утримується в $par

$art->show();

}

?>

Листинг 6.6. Використання об’єктно-орієнтованого підходу


7. Лекція:

Тема: Робота з масивами даних

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

  1. Дайте визначення об’єкту.

  2. Дайте визначення класу.

  3. Що входить в опис класу?

  4. Для чого використовується ключове слово this?

  5. Які існують обмеження на імена класів?

  6. Яким чином ініціалізуються змінні класу?

  7. Як створюється об’єкт класу?

  8. Що таке успадкування? Яким чином відбувається успадкування в мові РНР?

  9. Що таке механізм розширення? В чому сенс його використання?

  10. Що таке оператор "::"? В чому сенс його використання?

  11. Що таке оператор "parent"? В чому сенс його використання?

ПЛАН

1 Масиви

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

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

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

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

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

1 Масиви

В одній з перших лекцій ми розповідали про те, як можна створити масив даних. Нагадаємо, що масив можна створити двома способами:

За допомогою конструкції array

$array_name = array("key1"=>"value1", "key2"=>"value2");

Безпосередньо задаючи значення елементам масиву

$array_name["key1"] = value1;

Наприклад, нам потрібно зберігати список документів, які будуть вилучені з бази даних. Природно зберігати його у вигляді масиву, ключем у якому буде ідентифікатор документа (його унікальний номер), а значенням - назва документа. Цей масив можна створити в такий спосіб:


Смотрите также файлы