- •1. Основні технології розробки web-додатків
- •1.1 Протокол http
- •Основні технології розробки web-додатків
- •1.3 Короткі підсумки
- •2 Структура html-документа
- •2.1. Елементи мови html
- •2.2 Структура html-документа
- •2.2.1.Початок
- •2.2.2 Тіло документа
- •Заголовки
- •Нижче на малюнку показаний результат використання наступних заголовків:
- •Списки в html
- •2.3 Використання графіки в html
- •2.4 Таблиці
- •Атрибут border. Значення цього атрибута визначає як будуть виглядати рамки таблиці. Якщо атрибут не заданий або його значення дорівнює нулю, то таблиця не матиме рамок.
- •2.5 Html-форми Форми використовуються в www для передачі інформації від клієнта до сервера.
- •3 Каскадні таблиці стилів css
- •3.1 Загальні відомості про css
- •3.2 Додавання стилю на веб-сторінку
- •3.2.1. Таблиця пов'язаних стилів
- •3.2.2 Таблиця глобальних стилів
- •3.2.3 Внутрішні стилі
- •3.3 Синтаксис css
- •3.3.1 Властивості css
- •3.3.2 Селектори тегів
- •3.3.3 Селектори класів
- •3.3.4 Селектори-ідентифікатори
- •3.3.5 Контекстні селектори
- •3.3.6 Сусідні селектори
- •3.3.7 Дочірні селектори
- •Селектор зі значенням атрибута – встановлює стиль елемента в тому випадку, якщо задано певне значення зазначеного атрибута. Синтаксис застосування наступний.
- •Наприклад:
- •3.3.9 Універсальний селектор
- •3.4 Псевдокласи
- •3.4.2 Короткі підсумки
- •4 Типи і структури даних в javascript
- •Скрипт в html документі
- •4.2 Змінні та літерали
- •4.2.1 Літерали
- •4.3 Оператори JavaSscript
- •4.3.2 Оператор обробки рядків
- •4.3.3 Оператор typeof Аргументом оператора є змінна або вираз. Оператор повертає рядок, що описує тип аргументу(див. Табл. 4.4).
- •4.3.4 Умовний оператор (Оператор If)
- •4.3.5 Оператор перемикання (switch)
- •4.3.6 Оператори циклу
- •4.4 Масиви
- •Метод reverse () – застосовується для зміни на протилежний порядок елементів масиву всередині масиву. Припустимо, масив натуральних чисел впорядкований по зростанню:
- •Впорядкуємо його по спаданню:
- •4.5.2 Інструкція return
- •4.5.3 Виклик функції
- •4.6.2 Константи
- •4.6.3 Математичні функції.
- •4.6.4 Приклад. Генератор випадкових чисел
- •4.7 Контрольні питання
- •Події та обробники подій
- •5.1.1 Спливання подій в dhtml
- •5.1.2 Стандартні події dhtml.
- •Способи зв'язування подій
- •5.2.1 Введення подій в якості атрибутів.
- •5.2.2 Обробники подій як функції.
- •5.2.3 Динамічне зв'язування подій у сценарії.
- •5.2.5 Атрибути for і event.
- •Об'єкти браузера
- •Об'єктна модель браузера
- •Об'єкт window (Операції з вікнами)
- •Об'єкт navigator (властивості браузера)
- •Об'єкт location (Інформація про документ і вікна браузера)
- •Об'єкт history (Переходи між Web-сторінками )
- •Робота з діалоговими вікнами
- •Управління документом
- •Об'єктна модель документа
- •7.1.1 Сімейства, властивості і методи
- •Дерево документа (Document Tree)
- •Переміщення по Дереву Документа.
- •Динамічний вміст
- •8.1.1 Найбільш популярні моделі даних
- •9.3.1 Поділ інструкцій.
- •9.3.2 Коментарі.
- •9.3.3 Змінні, константи й оператори
- •9.3.6 Типи даних
- •Висновок
- •Керуючі конструкції рнр
- •Умовні оператори
- •// Ця програма надрукує всі парні цифри
- •{// Друкуємо цифру, якщо вона парна
- •Оператори передачі управління
- •Оператори включення
- •10.5 Висновок
- •Функції і масиви в php
- •Функції, визначені користувачем
- •11.1.1 Повернення значень функцією.
- •Рекурсивні функції.
- •11.1.3 Функції-змінні.
- •11.1.4 Побудова бібліотек функцій.
- •11.2.1 Операції з масивами.
- •11.2.2 Сортування масивів.
- •Sort_regular – порівнювати елементи масиву звичайним чином; sort_numeric – порівнювати елементи масиву як числа; sort_string – порівнювати елементи масиву як рядки.
- •11.2.3 Сортування масиву за ключами.
- •11.2.4 Сортування за допомогою функції, заданої користувачем.
- •Ми застосували нашу власну функцію сортування до всіх елементів масиву.
- •11.2.5 Застосування функції до всіх елементів массиву.
- •11.2.6 Виділення підмасива
- •Висновок
- •12 Строкові функції php
- •12.1 Функції пошуку в тексті (substr(), strpos(), strrpos(), strstr(), strchr(), stristr(), strrchr(), substr_count(), strspn(), strcspn())
- •12.2 Функції strlen(), chr() і ord()
- •12.3 Trim-функції (функції видалення символів відступу) trim (), ltrim (), rtrim (), chop ()
- •12.4 Функції форматного виведення. Специфікатори перетворення printf (), sprintf (), sscanf ().
- •12.5 Функції перетворення кодування
- •12.6 Функції роботи з бінарними даними pack () unpack ()
- •12.7 Функції роботи з блоками тексту (wordwrap (), str_replace (), substr_replace (), strtr (), stripslashes (), stripcslashes (), addslashes (), addcslashes (), quotemeta (), strrev ())
- •12.8 Функції об'єднання / поділу рядків (str_repeat (), str_pad (), chunk_split (), strtok (), explode (), implode (), join ())
- •12.9 Функции сравнения строк (strcmp(), strncmp(), strcasecmp(), strncasecmp(), strnatcmp(), strnatcasecmp(), similar_text(), levenshtein())
- •12.10 Функції роботи з url (parse_url (), parse_str (), rawurlencode (), rawurldecode (), base64_encode (), base64_decode ())
- •12.11 Функції перетворення регістру (strtolower (), strtoupper (), ucfirst (), ucwords ())
- •12.13 Функція htmlspecialchars
- •13 Робота з файлами
- •13.1 Відкриття і закриття файлів
- •13.2 Читання з файлів і запис у файли
- •13.2.1 Читання з файлів.
- •13.2.2 Запис в файли
- •13.5 Переміщення по файлам
- •13.6 Робота з каталогами
- •13.7 Завантаження файлу на сервер
- •14.1 Авторизація доступу
- •14.2 Механізм сесій
- •14.3 Налаштування сесій
- •14.4.1 Відкриття сесії
- •14.4.2 Створення сесії
- •14.4.3 Реєстрація змінних сесії
- •14.4.4 Видалення змінних сесії
- •14.5 Безпека
- •14.6 Висновок
- •15.1 Проектування
- •15.2 Система адміністрування контенту
- •15.2.1 Вимоги до системи адміністрування контенту (cms).
- •15.2.2 Адміністрування списку користувачів.
- •15.2.3 Вхід на сторінку адміністрування
- •15.2.4 Відкриття списку користувачів.
- •15.2.5 Редагування запису користувача.
- •15.2.6 Видалення користувача
9.3.6 Типи даних
В PHP не прийнято явне оголошення типів змінних. Переважно, щоб це робив сам інтерпретатор під час виконання програми в залежності від контексту, в якому використовується змінна. Розглянемо по порядку всі перераховані типи даних. PHP підтримує вісім простих типів даних.
Чотири скалярних типи:
boolean (логічний);
integer (цілий);
float (з плаваючою точкою);
string (рядок).
Два змішаних типи:
array (масив);
object (об'єкт).
І два спеціальних типи:
resource (ресурс);
NULL.
Тип boolean (булев або логічний тип) – це найпростіший тип виражає істинність значення, тобто змінна цього типу може мати тільки два значення – істина TRUE або брехня FALSE. Щоб визначити булев тип, використовують ключове слово TRUE або FALSE. Обидва регістронезалежні. Приклад:
<?php
$test = true;
?>
Тип integer (цілі). Цей тип задає число з безлічі цілих чисел Z = {..., -2, -1, 0, 1, 2, ...}. Цілі можуть бути вказані у десятковій, шістнадцятковій або вісімковій системі числення, за бажанням з попереднім знаком «-» або «+».Якщо ви використовуєте вісімкову систему числення, ви повинні випередити число 0 (нулем), для використання шістнадцяткової системи потрібно поставити перед числом 0x. Приклад:
<?php
# десяткове число
$a = 1234;
# від'ємне число
$a = -123;
# восьмирічне число (еквівалентно 83 в десятковій системі)
$a = 0123;
# шістнадцятирічне число (еквівалентно 26 в десятковій системі)
$a = 0x1a;?>
Розмір цілого залежить від платформи, хоча, як правило, максимальне значення близько двох мільярдів (це 32-бітне знакове). Беззнакові цілі PHP не підтримує. Якщо ви визначите число, що перевищує межі цілого типу, воно буде інтерпретовано як число з плаваючою точкою. Також якщо ви використовуєте оператор, результатом роботи якого буде число, яке перевищує межі цілого, замість нього буде повернуто число з плаваючою точкою.
В PHP не існує оператор ділення цілих. Результатом 1/2 буде число з плаваючою точкою 0.5. Ви можете привести значення до цілого, що завжди округлює його в меншу сторону, або використовувати функцію round (), округляти значення за стандартними правилами. Для перетворення змінної до конкретного типу потрібно перед змінною вказати в дужках потрібний тип. Наприклад, для перетворення змінної $ a = 0.5 до цілого типу необхідно написати (integer) (0.5) або (integer) $ a або використовувати скорочений запис (int) (0.5). Можливість явного приведення типів за таким принципом існує для всіх типів даних (звичайно, не завжди значення одного типу можна перевести в інший тип).
Тип float (числа з плаваючою точкою). Числа з плаваючою точкою (вони ж числа подвійної точності або дійсні числа) можуть бути визначені за допомогою будь-якого з наступних синтаксисів:
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7e-10;
?>
Розмір числа з плаваючою точкою залежить від платформи, хоча максимум, як правило, ~1.8e308 з точністю близько 14 десяткових цифр.
Тип string (рядок).
Рядок – це послідовність символів. В PHP символ – це те ж саме, що байт, це означає, що існує рівно 256 різних символів. Це також означає, що PHP не має вбудованої підтримки Unicode. В PHP практично не існує обмежень на розмір рядків, тому немає абсолютно ніяких причин турбуватися про їх довжину.
Рядок PHP може бути визначений трьома різними способами:
з допомогою одинарних лапок;
з допомогою подвійних лапок;
heredoc-синтаксисом;
nowdoc-синтаксисом (починаючи з версії PHP 5.3.0).
Одинарні лапки. Найпростіший спосіб визначити рядок - це укласти її в одинарні лапки (символ '). Щоб використовувати одинарні лапки всередині рядка, треба екранувати його зворотньою косою рискою (\). Якщо необхідно написати саму зворотню косу риску, продублюйте її (\\). Всі інші випадки застосування зворотної косої риски будуть інтерпретовані як звичайні символи: це означає, що якщо ви спробуєте використовувати інші керуючі послідовності, такі як \r \n, вони будуть виведені як є замість якоїсь особливої поведінки. Зауваження: На відміну від синтаксису подвійних лапок і heredoc, змінні і управляючі послідовності для спеціальних символів, укладені в одинарні лапки, не обробляються.
Екранування символу – заміна в тексті керуючих символів на відповідні текстові підстановки. Один з видів керуючих послідовностей. Найпростіший спосіб визначити рядок – це укласти його в одинарні лапки «'». Щоб використовувати одинарні лапки всередині рядка, як і в багатьох інших мовах, перед нею слід поставити символ зворотної косої риски «\», тобто екранувати її. Якщо зворотня коса риска повинна йти перед одинарною лапкою або в кінці рядка, необхідно продублювати її «\\'».
Якщо всередині рядка, укладеної в одинарні лапки, зворотня риска «\» зустрічається перед будь-яким іншим символом (відмінним від«\'»), то він розглядається як звичайний символ і виводиться, як і всі інші. Тому зворотню косу риску необхідно екранувати, тільки якщо вона знаходиться в кінці рядка, перед закриваючою лапкою.
У PHP існує ряд комбінацій символів, що починаються з символу зворотної косої межі. Їх називають керуючими послідовностями, і вони мають спеціальні значення. Так ось, на відміну від двох інших синтаксисів, змінні і керуючі послідовності для спеціальних символів, що зустрічаються в рядках, взятих в одинарні лапки, не обробляються. Приклад:
<?php
echo 'також ви можете вставляти в рядки
символ нового рядка таким чином,
оскільки це нормально ';
//
щоб вивести ' треба перед нею поставити \
echo
'щоб вивести \' треба перед '.'поставити \\';
// ви хочете видалити c:\*.*?
echo 'ви хочете видалити c:\\*.*?';
// це не вставить: \n
// новий рядок
echo ' це не вставить: \n новий рядок;
//
змінні $ expand також
// $either не підставляються
echo
'змінні $expand також $either'.'не підставляються';
?>
Подвійні лапки. Якщо рядок укладена в подвійні лапки «"», PHP розпізнає більшу кількість керуючих послідовностей для спеціальних символів. Деякі з них наведені в таблиці 9.7.
Але найважливішою властивістю рядків в подвійних лапках є обробка змінних. Дивіться більш докладніше: обробка рядків.
Таблиця 9.7 - Керуючі послідовності |
|
Послідовність |
Значення |
\n |
Новий рядок (LF или 0x0A (10) в ASCII) |
\r |
Повернення каретки (CR или 0x0D (13) в ASCII) |
\t |
Горизонтальна табуляція (HT или 0x09 (9) в ASCII) |
\\ |
Зворотня коса риска |
\$ |
Знак долара |
\" |
Подвійні лапки |
Heredoc. Інший спосіб визначення рядків – це використання heredoc-синтаксису. У цьому випадку рядок повинен починатися з символу <<<, після якого йде ідентифікатор. Закінчується рядок цим ідентифікатором. Закриваючий ідентифікатор повинен починатися в першому стовпці рядка. Крім того, ідентифікатор повинен відповідати тим же правилам іменування, що і всі інші позначки в PHP: містити тільки алфавітно-цифрові символи і знак підкреслення і починатися не з цифри або знака підкреслення.
Heredoc-текст веде себе так само, як і рядок в подвійних лапках, при цьому їх не маючи. Це означає, що вам немає необхідності екранувати лапки в heredoc, але ви як і раніше можете використовувати перераховані вище керуючі послідовності. Змінні всередині heredoc теж обробляються. Приклад:
<?php
$str = <<<eod
приклад рядка,що охоплює кілька
рядків, з використанням
heredoc-синтаксису
eod;
// тут ідентифікатор – eod. нижче
// ідентифікатор eot
$name = 'вася';
echo <<<eot
мене звуть "$name".
eot;
// це виведе "мене звуть вася"."
?>
Зауваження: Підтримка heredoc була додана в PHP 4.
Nowdoc – це те ж саме для рядків в одинарних лапках, що і heredoc для рядки в подвійних лапках. Nowdoc схожий на heredoc, але всередині нього не здійснюється ніяких підстановок. Ця конструкція ідеальна для впровадження PHP-коду або інших великих блоків тексту без необхідності його захисту. У цьому він трохи схожий на SGML-конструкцію <![CDATA[ ]]> тим, що оголошує блок тексту, не призначений для обробки.
Nowdoc вказується тією ж послідовністю <<<, що використовується в heredoc, але наступний за нею ідентифікатор полягає в одинарні лапки, наприклад, <<<'EOT'. Всі умови, діючі для heredoc ідентифікаторів також дійсні і для nowdoc, особливо ті, що відносяться до закриваючого ідентифікатора.
На відміну від heredoc, nowdoc може бути використаний в будь-якому контексті зі статичними даними. Типовий приклад ініціалізації полів класу або констант:
Якщо рядок вказується в подвійних лапках, або за допомогою heredoc, змінні всередині неї обробляються.
Тип array (масив).
Масив PHP являє собою упорядковану карту – тип, який перетворює значення в ключі. Цей тип оптимізований в декількох напрямках, тому ви можете використовувати його як власне масив, список (вектор), хеш-таблицю (є реалізацією карти), стек, чергу і т. д. Оскільки ви можете мати значення інший масив PHP, можна також легко емулювати дерева.
Визначити масив можна за допомогою конструкції array() або безпосередньо задаючи значення його елементів.
Визначення за допомогою array():
array ([key] => value, [key1] => value1, ... )
Мовна конструкція array() приймає в якості параметрів пари ключ => значення, розділені комами.
Символ => встановлює відповідність між значенням і його ключем. Ключ може бути як цілим, так і рядком, а значення може бути будь-якого наявного в PHP типу. Числовий ключ масиву часто називають індексом. Індексування масиву в PHP починається з нуля.
Значення елементу масиву можна отримати, вказавши після імені масиву в квадратних дужках ключ шуканого елемента. Якщо ключ масиву являє собою стандартний запис цілого числа, то він розглядається як число, в іншому випадку – як рядок. Тому запис $a["1"] рівносильний запису $a[1], так само як і $a["-1"] рівносильно $a[-1].
Якщо використовувати в якості ключа TRUE або FALSE, то його значення перекладається відповідно в одиницю і нуль типу integer. Приклад:
<?php
$books = array ("php" =>"php users guide", 12 => true);
echo $books["php"]; // виведе "php users guide"
echo $books[12]; // виведе 1
?>
Якщо для елемента ключ не заданий, то в якості ключа береться максимальний числовий ключ, збільшений на одиницю.
Якщо вказати ключ, якому вже було привласнене якесь значення, то воно буде перезаписане. Починаючи з PHP 4.3.0, якщо максимальний ключ – від'ємне число, то наступним ключем масиву буде нуль (0). Приклад:
<?php
// масиви $arr1 і $arr2 еквіваленти
$arr1 = array(5 => 43, 32, 56, "b" => 12);
$arr2 = array(5 => 43, 6 => 32,7 => 56, "b" => 12);
?>
Якщо використовувати NULL, то замість ключа отримаємо порожній рядок. Можна використовувати і самий порожній рядок у якості ключа, при цьому його треба брати в лапки. Так що це не те ж саме, що використання порожніх квадратних дужок. Не можна використовувати в якості ключа масиви і об'єкти.
Визначення за допомогою синтаксису квадратних дужок.
Створити масив можна, просто записуючи в нього значення. Як ми вже говорили, значення елемента масиву можна отримати за допомогою квадратних дужок, всередині яких потрібно вказати ключ наприклад, $book["php"]. Якщо вказати новий ключ і нове значення наприклад, $book["new_key"]="new_value", то в масив додається новий елемент. Якщо ми не вкажемо ключ, а тільки присвоїмо значення $book[]="new_value", то новий елемент масиву буде мати числовий ключ, на одиницю більший максимального існуючого. Якщо масив, в який ми додаємо значення, ще не існує, то він буде створений.
<?php
// додали в масив $books значення value1 з ключем key
$books["key"] = value1;
// додали в масив значення value2 з ключем 13,
// оскільки максимальний ключ у нас був 12 $books[] = value2;?>
Для того щоб змінити конкретний елемент масиву, потрібно просто присвоїти йому з його ключем нове значення. Змінити ключ елемента не можна, можна тільки видалити елемент (пару ключ/значення) і додати нову. Щоб видалити елемент масиву, потрібно використовувати функцію unset().
<?php
$books = array ("php" => "php users guide", 12 => true);
// додали елемент з ключем (індексом) 13 це еквівалентно
// $books[13] = "book about perl";
$books[] = "book about perl";
// це додає новий елемент до масиву з ключем "lisp"
// і значенням 123456
$books["lisp"] = 123456;
// це видаляє елемент із ключем 12 з масиву
unset($books[12]);
// видаляє масив повністю
unset ($books);
?>
Зауважимо, що, коли використовуються порожні квадратні дужки, максимальний числовий ключ шукається серед ключів, існуючих в масиві з моменту останнього переіндексування. Переіндексувати масив можна за допомогою функції array_values ().
<?php
// створюємо масив зі значеннями:
"a", "b" и "c".
// оскільки ключі не вказані, вони будуть: 0,1,2 відповідно
$arr = array ("a","b","c");
// виводимо масив (і ключі, і значення)
print_r($arr);
// видаляємо з нього всі значення
unset($arr[0]); unset($arr[1]); unset($arr[2]);
// виводимо масив (і ключі, і значення)
print_r($arr);
// додаємо новий елемент в масив, його індексом буде 3, а не 0
$arr[] = "aa";
// виводимо масив
print_r($arr);
// переіндексуемо масив
$arr = array_values($arr);
// ключем цього елемента буде 1
$arr[] = "bb";
// виводимо масив
print_r($arr);?>
Результатом роботи цього скрипта буде:
Array ( [0] => a [1] => b [2] => c )
Array ( )
Array ( [3] => aa )
Array ( [0] => aa [1] => bb )
Тип object (об'єкти). Об'єкт – тип даних, що прийшов з об'єктно-орієнтованого програмування (ООП). Згідно з принципами ООП, клас – це набір об'єктів, що володіють певними властивостями і методами роботи з ним, а об'єкт відповідно – екземпляр класу. Наприклад, програмісти – це клас людей, які пишуть програми, вивчають комп'ютерну літературу і, крім того, як всі люди, мають ім'я і прізвище. Тепер, якщо взяти одного конкретного програміста, Васю Іванова, то можна сказати, що він є об'єктом класу програмістів, має ті ж властивості, що й інші програмісти, теж має ім'я, пише програми і т.п.
У PHP для доступу до методів об'єкта використовується оператор ->. Для ініціалізації об'єкту використовується вираз new, що створює в змінній екземпляр об'єкта. Приклад:
<?php
//створюємо клас людей
class person
{
// метод, який вивчає людину
php function know_php () {
echo "теперь я знаю php";
}
}
// створюємо об'єкт класу людина
$bob = new person;
// навчаємо його php
$bob -> know_php();
?>
Тип resource (ресурси).
Ресурс – це спеціальна змінна, що містить посилання на зовнішній ресурс (наприклад, з'єднання з базою даних). Ресурси створюються і використовуються спеціальними функціями (наприклад, mysql_connect (), pdf_new () і т.п.).
Тип Null. Спеціальне значення NULL говорить про те, що змінна не має значення. Змінна вважається NULL, якщо:
їй була присвоєна константа NULL ($ var = NULL);
їй ще не було присвоєно яке-небудь значення; вона була видалена за допомогою unset(). Існує тільки одне значення типу NULL - регістронезалежне ключове слово NULL.
Рішення завдання. Припустимо, у вас є якесь оголошення і кілька різних людей, яким потрібно це оголошення відправити. Для цього ви робите заготовку з вмістом оголошення, всередині якого є ряд змінючих (в залежності від потенційного одержувача) параметрів.
Тепер повернемося до задачі, яку ми поставили на самому початку лекції. Нагадаємо, що вона складалася в складанні листа різним людям з приводу різних подій. Спробуємо використовувати для вирішення цього завдання вивчені засоби – змінні, оператори, константи, рядки і масиви. Залежно від одержувача змінюється подія і звернення, зазначені в листі, тому природно винести ці величини в змінні. Більш того, оскільки подій і людей багато, зручно використовувати змінні типу масив. Підпис в листі залишається постійною завжди, тому логічно задати її як константу. Щоб не писати занадто довгі і громіздкі рядки, використовуємо оператор конкатенації. Отже, ось що вийшло:
<?php
// нехай ваш підпис буде константою
define("sign"," з повагою, вася ");
// задамо масиви людей і подій
$names = array("іван іванович",
" петро петрович",
"семен семенович");
$events = array("f" => " день відкритих дверей ",
"o" => " відкриття виставки ",
"p" => " бал випускників ");
// складемо текст запрошення
$str = " шановний (а), $names[0]";
$str.= "<br> запрошуємо вас на ".$events["f"];
$str.= "<br>".sign;
// виводимо текст на екран
echo $str;
?>
