Підручник з PHP3

Примітка: Тег & lt? Php еквівалентний & lt? . Ви також можете використовувати теги & ltscript language = "php" & gt та & lt/script & gt Нарешті, для програмістів ASP зверніть увагу, що теги також розпізнаються.

ціле число

Розділювач інструкцій - це; . Це обов’язково, якщо тільки інструкція не дотримується тегом? & Gt

Перші кроки

Відображення тексту

Функція echo відображає один (або кілька) аргументів. Якщо аргументом є рядок між одинарною лапкою, він відображається як є. ехо 'Привіт, Світ';

З подвійною лапкою "змінні, що містяться в цьому рядку, інтерпретуються. $ Name =" Toto "; echo" Hello, $ name "; // Привіт, Toto echo 'Hello, $ name'; // Hello, $ name

Результат функції ми також можемо включити безпосередньо в ехо.

Щоб відобразити символ ``, ви вмикаєте його, використовуючи вхідний символ \ echo "Втеча символів: \" \ n ";

Ви можете включити спеціальні символи для управління відображеним потоком:

Завершення виконання сценарію

ми використовуємо exit ();

Прокоментуйте код

Коментар до рядка: // або #

Прокоментуйте кілька рядків:/*. * /

Використання командного рядка

Ви можете запустити скрипт PHP3 з командного рядка, що дозволяє використовувати за межами простих `` веб-фреймворків ''. параметр -q запобігає відображенню першого рядка Тип вмісту: text/html D: \ WEB \ PHP \> php -q monscript.php3

Оператори

PHP має класичні оператори C, а також інші, натхненні Perl.

Порівняння

Логіка

У тестах використовуються логічні оператори, наприклад. в if (стан)

Примітка: оператори та, або, також не доступні і роблять те саме.

Арифметика

оператор/повертає ціле число, якщо обидва операнди є цілими числами, інакше повертає плаваюче число.

Призначення

$ n = 0; $ n + = 2; // $ n дорівнює 2 $ n * = 6; // $ n дорівнює 12 $ r = $ n% 5; // 12 за модулем 5 => $ r = 2 if (++ $ n == 13) echo "unhacky"; // попереднє збільшення тесту повертає true

Різні

Оператор конкатенації. може використовуватися на ланцюгових скалярах. $ string = "Ваше ім'я"; $ name = "Тото"; echo $ string. ". $ name; // відображається "Ваше ім'я Тото"

Оператор?: або оператор тринарного тесту. Його синтаксис - [логічний тест]? [вираз, якщо істина]: [вираз, якщо неправда] $ a = $ b = 1; ($ a == $ b)? $ c = 10: $ c = 20; // виконуємо $ c = 10;

Ми також можемо використовувати його для ущільнення послідовностей тестування/призначення $ response = ($ a == $ b)? "a дорівнює b": "відмінне від b"; echo $ response; // вихід "дорівнює b", оскільки тест ($ a == $ b) повертає true

Бінарні файли

ехо 3 & 6; // 0011 І 0110 => 2 ехо 3 | 6; // 0011 АБО 0110 => 7 ехо 3 ^ 6; // 0011 XOR 0110 => 5 ехо

Константи

PHP дозволяє визначати константи за допомогою функції define .

Дві константи заздалегідь визначені PHP: __FILE__ містить ім'я файлу та __LINE__ номер поточного рядка. визначити ("NEXTPAGE", "script2.php3"); echo "Поточна сторінка:", __FILE__, "Наступна сторінка:", NEXTPAGE; // немає $ для констант

Змінні

Змінним передує знак $ незалежно від їх типу. Їх декларація необов’язкова.

Існує 3 типи змінних: скаляр, масив та асоціативний масив. Немає типу вказівника.

Тести на змінні

Функція isset дозволяє перевірити, чи визначена змінна.

Функція зняття дозволяє видалити змінну та розподілити використовувану пам'ять. echo isset ($ a); // => 0 (помилково) $ a = "; скасовано ($ a); // => 1 (істинний) echo isset ($ a); // => 0 (помилково)

Функція gettype дозволяє з’ясувати тип змінної. Він повертає рядок: `` рядок '' або `` ціле число '', `` подвійний '', `` масив '' або `` об'єкт ''. Примітка: Якщо змінна не визначена, вона повертає "рядок" $ a = 12; echo gettype ($ a); // => "ціле число" $ a = $ a/10; echo gettype ($ a); // => "подвійне" скасування ($ a); echo gettype ($ a); // => "рядок"

Ви також можете протестувати певний тип за допомогою функцій is_array, is_string, is_int, is_float, is_object. $ a = 123; echo is_int ($ a); // => (true) echo is_double ($ a) // => (false) echo is_string ($ a) // => (false) $ a + = 0,5; echo is_float ($ a) // => (true)

Примітка: Функції is_double та id_real еквівалентні is_float. Функції is_long і is_integer еквівалентні is_int .

Тип змінних

PHP змінні слабкого типу. PHP визначає його тип при призначенні.

Іноді корисно форсувати тип змінної. Ми використовуємо функцію урегулювання типу або оператори лиття (int), (рядок) утип тип повертає true, якщо перетворення працювало, інакше false. $ a = 3,1415; $ результат = урегульований тип ($ a, "ціле число"); // => $ a = 3, $ результат = 1

Операторами перетворення є:

Ми також можемо використовувати strval, intval, doubleval, які повертають змінну, перетворену в string/integer/real. Ці функції не працюють на масивах. $ strPI = "3.1415"; $ intPI = intval ($ strPI); $ PI = doubleval ($ strPI); ехо "$ strPI/$ intPI/$ PI"; // => 3.1415/3/3.1415

скалярні змінні

Скалярні змінні бувають 3 типів: рядки, цілі числа, реальні.

Призначення

Картини

Декларація
Призначення
Відносні функції

Повертає кількість елементів у масиві. еквівалент count $ sz = sizeof ($ tablo);

Повертає true, якщо змінна має тип масиву (або асоціативний масив), інакше false.

reset ($ tablo) розміщує внутрішній вказівник на першому елементі масиву: кожна змінна масиву має внутрішній вказівник на поточний елемент.

end ($ tablo) розміщує внутрішній вказівник масиву на останньому елементі масиву.

повертає поточний елемент масиву.

перемістити вказівник на наступний елемент і повернути цей елемент. повертає false, якщо воно не існує

переміщує вказівник на попередній елемент і повертає цей елемент. повертає false, якщо воно не існує

$ a = кожен ($ tablo) повертає індекс і поточне значення в 2-елементному масиві; $ a [0] містить індекс, $ a [1] - значення.

list ($ scalar1, $ scalr2,.) створює тимчасовий масив із скалярних змінних, переданих як аргументи.

ключ ($ tablo) повертає індекс поточного елемента масиву.

сортувати, rsort, usort, uasort

Різні функції сортування масивів.

сортування відсортовано за збільшенням значень, rsort за зменшенням значень $ tablo_trie = sort ($ tablo);

usort і uasort дозволяють програмісту реалізувати функцію сортування, яку він використовує сам. Виклики PHP послідовно Функція повинна повертати -1/0/1 залежно від того, чи є перший елемент меншим/рівним/більшим, ніж другий. У наведеному нижче прикладі ми реалізуємо сортування, яке ігнорує функцію верхнього/нижнього регістру compare_maj ($ elem1, $ elem2) < if( strtoupper( $elem1 ) == strtoupper( $elem2 ) ) return 0; return ( strtoupper( $elem1 )

Асоціативний масив

Асоціативний масив - це масив, індекс якого є рядком замість числа. Ми також говоримо про `` хеш-масив '' або `` хеш ''. Він оголошений як традиційний живопис, розрізнення проводиться під час завдання.

Декларація
Призначення

Давайте призначимо середню кількість калорій фруктам. $ калорій ["яблука"] = 300; $ калорій ["банан"] = 130; $ калорій ["лічі"] = 30; // лічі дуже малий

Відносні функції

Для перевірки існування елемента ми використовуємо функцію isset () if (isset ($ калорій ["яблука"])) < echo "une pomme contient ", $calories["pommes"], " calories\n"; >ще

asort, arsort, ksort, aksort

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

asort сортується за збільшенням значень, arsort за зменшенням значень

ksort сортування за збільшенням індексу (ключа)

Контрольні структури

Тести

`` Основний '', якщо тест

У випадку кількох послідовних тестів, що стосуються однієї і тієї ж змінної, ми скоріше використовуватимемо тест swith Примітка: Якщо тіло тесту містить лише одну інструкцію, то похвали <> є необов'язковими (на відміну від Perl).

перемикач

Комутатор не має еквівалента в Perl. це еквівалент SELECT CASE у Basic. Це дозволяє порівняти змінну з кількома заздалегідь визначеними значеннями. Це дозволяє більш компактний і читабельний код, ніж тест if-elseif-elseif.

Значення [змінної] послідовно порівнюється з кожним полем. Якщо є зв’язок, виконується блок інструкцій.

Не пропускайте обрив у кінці блоку, інакше виконується решта перемикача.

Нарешті, обробник за замовчуванням дозволяє визначити інструкції, які виконуватимуться за замовчуванням, тобто якщо жодне поле не спрацювало. перемикач ($ firstname)

Пряжки

У PHP3 ми маємо циклічні структури, подібні до C.

Інструкція перерви дозволяє вийти з циклу в будь-який час.

Інструкція continue повертається до початку циклу. для ($ i = 0; $ i

для циклу

for ([ініціалізації]; [тестовий результат]; [робити кожен раз]) // завершуємо сканування табло для ($ i = 0; $ i

while цикл

do . while loop

Умова виходу знаходиться в кінці циклу. Таким чином, цикл проходить принаймні один раз. $ fp = fopen ("myfile.txt"); робити < $ligne = fgets( $fp, 1024 ); . >while (! feof ($ fp));

Функції

У PHP немає різниці між функціями/процедурами.

Функції PHP приймають від 0 до n параметрів. Ці параметри можуть бути будь-якого типу.

Примітка: Ви повинні реалізувати функцію вище за її використання, на відміну від C. В іншому випадку PHP видає помилку типу Виклик до непідтримуваної або невизначеної функції (функції) у (файл) у рядку (номер)

Ви не можете оголосити прототип функції, наприклад, наприклад. в Паскалі.

Побачимо функцію, що перелічує вміст асоціативного масиву: функція lister_hash ($ hash) < if( ! is_array( $hash ) ) < echo "parametre hash non correct"; return; >для (скидання ($ хеш); список ($ ключ, $ значення) = кожен ($ хеш);) < echo "$key: $value \n"; >> $ hash = array ('name' => "West", 'first name' => "Leo"); lister_hash ($ хеш); // => ім'я: ім'я на захід: Лео $ name = "Тото"; lister_hash ($ name); // => "неправильний хеш-параметр"

За замовчуванням глобальні змінні не відомі всередині тіла функції. Однак доступ до нього можна отримати за допомогою глобального ключового слова. $ debug_mode = 1; // функція глобальної змінної myfonc ()

Іншим рішенням є використання асоціативного масиву $ GLOBALS, який містить усі глобальні змінні, оголошені одночасно T: $ GLOBALS ['debug_mode'] еквівалентно $ debug_mode.

Функції можуть повертати результат, а може і не повертати. ми використовуємо зворотне втручання. Повернута змінна може бути будь-якого типу. Він передається за допомогою копії.

необов’язкові параметри

Дозволені необов’язкові параметри: просто призначте їм значення за замовчуванням. функція myfunc ($ param1 = "невідомо", $ param2 = ") < echo "param1=$param1 param2=$param2\n"; >myfunc ("foo", "titi"); // => "param1 = foo param2 = titi" myfunc ("foo"); // => "param1 = toto param2 =" myfunc (); // => "param1 = невідомий param2 ="

передача параметрів за адресою

За замовчуванням параметри передаються за допомогою копії, тобто функція має локальну копію надісланої змінної. Однак ви можете передати параметр за адресою, перед цим поставивши &. Це дозволяє змінювати цей параметр у функції. функція refparam ($ param) < $param .= ". modifiй"; // . =>конкатенація рядків> $ variable = "параметр"; refparam (& $ змінна); echo $ змінна; // => "параметр. змінено"

Розширені функції

Регулярні вирази

ereg дозволяє порівняти змінну з моделлю. Для отримання додаткової інформації про моделі див., Наприклад, документ Perl.

модель - це перевірена модель

змінна - це змінна для тестування.

Масив пам'яті містить змінні, що зберігаються в моделі, першою є $ пам'яті [1]. $ memory [0] містить повну змінну

результат є істинним, якщо змінна відповідає моделі. $ filename = "file.txt"; $ ok = ereg ("\. (. *) ^", $ ім'я файлу, $ результат); якщо ($ ok) < $ext= $result[1]; echo "l'extension du fichier $filename est $ext\n"; >ще

Модульне програмування

Модульне програмування дозволяє повторно використовувати код, створюючи бібліотеки.

PHP дозволяє цю модульність завдяки програмуванню класичних бібліотек і класів.

Книжкові магазини

Бібліотеки - це традиційні файли PHP. Їх розширенням є .inc за домовленістю, але ніщо не заважає використовувати .php3. Ви також можете включити файл HTML або інший тип, проте будь-які теги PHP не будуть інтерпретовані. Ми включаємо файл із використанням include або require .

Існує важлива різниця між ними:

Ми можемо зрозуміти різницю на прикладі нижче: if ($ user == "Administrator") < include 'admin_fonctions.inc'; >якщо ($ user == "Адміністратор")

При включенні результат є очікуваним, тоді як при вимозі файл malib.inc включається незалежно від результату тесту, якщо.

Об'єктно-орієнтоване програмування

PHP3 має концепції ООП (об'єктно-орієнтоване програмування)

Методи оголошуються як функції.

Будівельник

Конструктор заявляє про себе як про метод. У ньому має бути назва класу, як у C ++. Він викликається автоматично під час створення класу. клас Транспортний засіб < var $nb_roues; function Vehicule( $nb_roues ) < $this->nb_roues = $ nb_roues; > функція NbWheels () < return $this->nb_wheels; >. > $ moto = новий транспортний засіб (2);

Спадщина

Просте успадкування можливо за допомогою extends .

Примітка: конструктор батьківського класу не викликається автоматично. Тому це слід робити при необхідності клас Автомобільний подовжує Автомобіль < var $marque= "; function Automobile( $marque, $nb_roues ) < $this->Автомобіль ($ nb_roues); // конструктор батьківського класу виклик $ this-> mark = $ mark; // набір брендів >>

Обмеження

У PHP3 немає поняття деструктора об'єктів.

Множинне успадкування не існує

Не існує приватних методів та атрибутів. Все є загальнодоступним і доступним ззовні.

Об'єкт з екземпляром - це не посилання (вказівник), а змінна, свого роду `` асоціативний масив з методами ''. Це ми можемо побачити на копії об’єкта: $ auto = new Vehicle (4); $ мотоцикл = $ авто; $ двигун-> nb_wheels = 2; echo $ auto-> nb_roues; // 2, а не 4 => $ auto і $ moto - два різні об'єкти

Налагодження сценарію PHP3

PHP не має - принаймні наразі - середовища розробки, порівнянного із середовищами C, Vb та іншими. Тож вам доведеться пройти старі добрі методи дідуся;) Ось декілька порад на цю тему.

Використовуйте функцію налагодження

Ви можете створити функцію Dbg ($ msg), яка відображає умовне повідомлення про налагодження. У голові файлу визначте змінну $ DEBUG до 1 або 0, щоб активувати ці повідомлення чи ні. $ DEBUG = 1; // Функція активації режиму налагодження Dbg ($ msg) < if( $DEBUG ) echo $msg, "
\ n ";> Dbg (" рядок ", __LINE__," var - це $ var ");

Отримайте середовище сценарію

Функція phpinfo () відображає поточну конфігурацію, змінні середовища тощо.

Змінні конфігурації

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

Якщо track_errors активний, глобальна змінна $ php_errormsg зберігає останнє повідомлення про помилку, що з’явилося.

Якщо track_vars активний, змінні CGI зберігаються відповідно. в асоціативних масивах $ HTTP_GET_VARS, $ HTTP_POST_VARS, $ HTTP_COOKIE_VARS залежно від того, чи походять вони з форми у методі GET, POST, у файлах cookie.

Безпека та PHP3

Поради щодо програмування

Глобальне забруднення космосу

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

Приклад

У цій бібліотеці html.inc ми додаємо змінним префікс HTML_

Додатки

Відмінності між PHP та ASP

PHP не має еквівалента сеансів ASP як стандарт. Однак є бібліотеки PHP3, яка реалізує сеанс.

Діапазон функцій PHP набагато більший (більше 500 функцій).

PHP реалізує об'єктно-орієнтоване програмування.

PHP розпізнає теги ASP, а також asp_tags = On

PHP підтримує як стандарт, так і просто завантаження файлів

На додаток до ODBC, PHP підтримує власний доступ до багатьох СУБД:

Корисні посилання

Примітка: більшість із цих веб-сайтів англійською мовою