Меню
безкоштовно
Головна  /  Мультимедіа / Вивчення основних правил синтаксису php. основи PHP

Вивчення основних правил синтаксису php. основи PHP

загальні поняття

Мова PHP спеціально призначений для веб-програмування. PHP поєднує переваги мов C і Perl і при цьому вельми простий у вивченні і володіє значними перевагами перед традиційними мовами програмування.

Синтаксис PHP дуже нагадує синтаксис мови C і багато в чому запозичений з таких мов як Java і Perl.

Програміст С дуже швидко освоїть мову PHP і зможе використовувати його з максимальною ефективністю.
В принципі, в PHP є практично всі оператори і функції, наявні в стандартному GNU С (або їх аналоги), наприклад є цикли (while, for), оператори вибору (if, switch), функції роботи з файлової системою і процесами (fopen, * dir, stat, unlink, popen, exec), функції введення-виведення (fgets, fputs, printf) і безліч інших ...

Мета даного розділу - коротке ознайомлення з основами синтаксису мови PHP. більш детальну інформацію по конкретним складовим синтаксису PHP ви знайдете у відповідних розділах.

PHP і HTML

Cінтаксіс будь-якої мови програмування набагато легше "відчути" на прикладах, ніж використовуючи якісь діаграми і схеми. Тому наведемо приклад найпростішого скрипта на PHP:



приклад

echo "Привіт, я - скрипт PHP!";
?>


Ви вже напевно помітили, що це класичний скрипт, з якого починають вивчення мови програмування.

Зверніть увагу, що HTML-код коректно обробляється інтерпретатором PHP.

Початок сценарію вас може спантеличити: хіба це сценарій? Звідки HTML-теги і ? Ось тут-то і криється головна особливість (До речі, надзвичайно зручна) мови PHP: PHP-скрипт може взагалі не відрізнятися від звичайного HTML-документа.

Йдемо далі. Ви, напевно, здогадалися, що сам код сценарію починається після відкриває тега і закінчується закриває ?> . Отже, між цими двома тегами текст інтерпретується як програма, і в HTML-документ не потрапляє. Якщо ж програмі потрібно щось вивести, вона повинна скористатися оператором echo.

Отже, PHP влаштований так, що будь-який текст, який розташований поза програмних блоків, обмежених і ?> , Виводиться в браузер безпосередньо. В цьому і полягає головна особливість PHP, на відміну від Perl і C, де вивід здійснюється за допомогою стандартних операторів.

поділ інструкцій

Інструкції поділяються також як і в C або Perl - кожен вираз закінчується крапкою з комою.

Закриває тег (?\u003e) Також має на увазі кінець інструкції, тому два наступних фрагмента коду еквіваленти:

echo "Це тест";
?>

Коментарі в PHP скрипти

Написання практично будь-якого скрипта не обходиться без коментарів.

PHP підтримує Комметаріі в стилі "C", "C ++" і оболонки Unix. наприклад:

echo "Це тест"; // Це однорядковий коментар в стилі c ++
/ * Це багаторядковий коментар
ще один рядок коментаря * /
echo "Це ще один тест";
echo "Останній тест"; # Це коментар в стилі оболонки Unix
?>

Однорядкові коментарі йдуть тільки до кінця рядка або поточного блоку PHP-коду, в залежності від того, що йде перед ними.

це приклад.


Тема вгорі виведе "Це приклад".

Будьте уважні, слідкуйте за відсутністю вкладених "C" -Коментарі, вони можуть з'явитися під час коментування великих блоків:

/*
echo "Це тест"; / * Цей коментар викличе проблему * /
*/
?>

Однорядкові коментарі йдуть тільки до кінця рядка або поточного блоку PHP-коду, в залежності від того, що йде перед ними. Це означає, що HTML-код після //?\u003e БУДЕ надрукований:?\u003e Виводить з режиму PHP і повертає в режим HTML, але // не дозволяє цього зробити.

Змінні в PHP

Імена змінних позначаються знаком $ . Те ж саме "Привіт, я - скрипт PHP!" Можна отримати наступним чином:

$ Message \u003d "Привіт, я - скрипт PHP!";
echo $ message;
?>

Типи даних в PHP

PHP підтримує вісім простих типів даних:

Чотири скалярних типи:

Boolean (двійкові дані)
- integer (цілі числа)
- float (числа з плаваючою точкою або "double")
- string (рядки)

Два змішаних типи:

Array (масиви)
- object (об'єкти)

І два спеціальних типи:

resource (ресурси)
NULL ( "порожні")

Існують також кілька псевдотіпов:

Mixed (змішані)
- number (числа)
- callback (зворотного виклику)

Детально про типи даних в PHP

Вирази в PHP

Основними формами виразів є константи і змінні. Наприклад, якщо ви записуєте "$ a \u003d 100", ви привласнюєте "100" змінної $ a:

У наведеному прикладі $ a - це змінна, \u003d - це оператор присвоювання, а 100 - це і є вираження. Його значення 100.

Виявом може бути і змінна, якщо їй порівнювати певне значення:

$ X \u003d 7;
$ Y \u003d $ x;

У першому рядку розглянутого прикладу виразом є константа 7, а у другому рядку - змінна $ x, тому що раніше їй було присвоєно значення 7. $ y \u003d $ x також є виразом.

Детально про вирази в PHP ви знайдете

Оператори PHP

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

Приклади операторів PHP:

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

$ A \u003d ($ b \u003d 4) + 5; // результат: $ a встановлена \u200b\u200bзначенням 9, змінної $ b присвоєно 4.

?>

Комбіновані оператори:

$ A \u003d 3;
$ A + \u003d 5; // встановлює $ a значенням 8, аналогічно запису: $ a \u003d $ a + 5;
$ B \u003d "Hello";
$ B. \u003d "There!" ; // встановлює $ b рядком "Hello There!", Як і $ b \u003d $ b. "There!";

?>

Строкові оператори:

$ A \u003d "Hello";
$ B \u003d $ a. "World!" ; // $ b містить рядок "Hello World!"

$ A \u003d "Hello";
$ A. \u003d "World!" ; // $ a містить рядок "Hello World!"
?>

Існують також логічні оператори і оператори порівняння, проте їх прийнято розглядати в контексті керуючих конструкцій мови.

Детальну інформацію по операторам PHP ви знайдете .

Керуючі конструкції мови PHP

Основними конструкціями мови PHP є:

  1. Умовні оператори (if, else);
  2. Цикли (while, do-while, for, foreach, break, continue);
  3. Конструкції вибору (switch);
  4. Конструкції оголошення (declare);
  5. Конструкції повернення значень (return);
  6. Конструкції включень (require, include).

Приклади конструкцій мови PHP:

if ($ a\u003e $ b) echo "Значення a більше, ніж b";
?>

Наведений приклад наочно показує використання конструкції if спільно з оператором порівняння ($ a\u003e $ b).

У наступному прикладі якщо змінна $ a не дорівнює нулю, буде виведений рядок "значення a істинно (true), тобто показано взаємодію умовного оператора (конструкції) if з логічним оператором:

if ($ a) echo "Значення a істинно (true)";
?>

А ось приклад циклу while:

$ X \u003d 0;
while ($ x ++< 10 ) echo $ x ;
// Виводить 12345678910
?>

Інформацію по всім керуючим конструкціям PHP ви можете отримати

Призначені для користувача функції в PHP

У будь-якій мові програмування існують підпрограми. У мові C вони називаються функціями, в асемблері - підпрограмами, а в Pascal існують два види підпрограм: процедури і функції.

У PHP такими підпрограмами є.

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

Наведемо приклад для користувача функції на PHP:

function funct () (
$ A \u003d 100;
echo "

$ a

" ;
}
funct ();

?>

Сценарій виводить 100:

Призначеним для користувача функцій в PHP можна передавати аргументи і отримувати повертаються функціями значення.

Детальну інформацію по призначених для користувача функцій PHP ви знайдете

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

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

ООП і PHP

PHP має досить хорошу підтримку об'єктно-орієнтованого програмування (ООП).

В PHP можна створювати класи різних рівнів, Об'єкти і досить гнучко ними оперувати.

ось приклад PHP класу і його використання:

// Створюємо новий клас Coor:
class Coor (
// дані (властивості):
var $ name;

// методи:
function Getname () (
echo "

John

" ;
}

}

// Створюємо об'єкт класу Coor:
$ Object \u003d new Coor;
// Отримуємо доступ до членів класу:
$ Object -\u003e name \u003d "Alex";
echo $ object -\u003e name;
// Виводить "Alex"

Є ще питання чи щось незрозуміло - ласкаво просимо на наш

В якому випадку виконується блок дій циклу
for (expr1; expr2; expr3) (
// блок дій
}

√ якщо другий вираз (expr2) обчислюється як true
якщо перший вираз (expr1) обчислюється як true
якщо третя вираз (expr3) обчислюється як true

Вивести на екран всі елементи масиву $ arr \u003d array (4,3,2,1) ;?
√ foreach ($ arr as $ a) echo "$ a«;

for ($ i \u003d 1; $ i<$arr; $i++) echo $arr[$i] .»»;

√ $ i \u003d 0;
while ($ arr [$ i]) (
echo $ arr [$ i]. »»;
$ I ++;
}

Дан масив $ arr. Вивести на екран третій елемент масиву, якщо він дорівнює числу 3.
if ($ arr \u003d\u003d 3) echo $ arr;
?>

if ($ arr \u003d\u003d 3) echo $ arr;
?>

if ($ arr \u003d 3) echo $ arr;
?>

Дан масив $ arr. Вивести на екран четвертий елемент масиву, якщо він еквівалентний рядку «4».
if ($ arr \u003d\u003d «3») echo $ arr;
?>

if ($ arr \u003d\u003d\u003d «4») echo $ arr;
?>

if ($ arr \u003d\u003d «4») echo $ arr;
?>

данакоманда:
if ($ var) echo "Hello»;
else echo "Bye»;
В якому випадку на екран буде виведено слово «Bye»?

√ якщо $ var \u003d\u003d\u003d false
якщо $ var \u003d\u003d «true»
√ якщо $ var \u003d\u003d «»

Дана команда: if (! $ Var) echo "Hello»; В якому випадку на екран буде виведено слово «Hello»?
якщо $ var \u003d\u003d true
√ якщо $ var перетвориться до логічного false
√ якщо $ var \u003d 0

Для чого може використовуватися PHP?
для створення операційних систем
√ для створення скриптів, що виконуються в командному рядку
√ для створення клієнтських GUI-додатків

Для чого не може використовуватися PHP?
√ для створення операційних систем
для створення скриптів, що виконуються в командному рядку
для створення клієнтських GUI-додатків

Відомо що настройки PHP можна зберігати / змінювати не тільки в php.ini, але і в самих PHP скрипти, в файлах.htaccess і в файлі налаштувань сервера httpd.conf. Де можна встановити значення опції register_globals?
в скрипті користувача
в php.ini, в скрипті користувача або в файле.htaccess
√ в php.ini, в файле.htaccess або в httpd.conf

Відомо, що настройки PHP можна зберігати / змінювати не тільки в php.ini, але і в самих PHP скрипти, в файлах.htaccess і в файлі налаштувань сервера httpd.conf. Де можна встановити значення опції session.auto_start?
√ в скрипті користувача
√ в php.ini або httpd.conf
√ в файле.htaccess

Відомо, що настройки PHP можна зберігати / змінювати не тільки в php.ini, але і в самих PHP скрипти, в файлах.htaccess і в файлі налаштувань сервера httpd.conf. Де можна встановити значення опції user_dir?
в скрипті користувача
√ тільки в php.ini або httpd.conf
в файле.htaccess

Як вбудовується PHP в HTML-код?
√ за допомогою тегів '
√ за допомогою тегів '
за допомогою тегів '<$’ и ‘$>’

Як задаються коментарі в мові PHP?
√ // рядок коментарів
√ / * декілька рядків коментарів * /
/ Кілька рядків коментарів /
** рядок коментарів **

Як можна задати масив в мові PHP?
√ $ arr \u003d array ( «a», »b», »c»);
√ $ arr \u003d «a»;
$ Arr ( «0» \u003d\u003e «a»);
$ Arr [ «a», »b», »c»] \u003d «q»;

Як можна задати рядок в мові PHP?
√ за допомогою подвійних лапок: $ Var \u003d "Це рядок»;
за допомогою відкриває символу '<<<‘ и закрывающего ‘>>>’:
$ Var \u003d<<< это строка >>>;
√ за допомогою одинарних лапок: $ var \u003d 'це рядок';
√ heredoc-синтаксисом:
$ Var \u003d<<

Як отримати значення константи з ім'ям CONS в мові PHP?
$ CONS
define ( «CONS», true);
√ CONS
√ constant ( «CONS»)

Як присвоюється значення константі в мові PHP?
√ define ( «CONS», »text»);
√ define ( «CONS», »text», true);
CONS \u003d «text»
constant ( «CONS») \u003d «text»

Як присвоюється значення змінної в мові PHP?
√ $ var \u003d 1;
var_name \u003d «text»;
$ 12as \u003d 12;

Як поділяються інструкції в мові PHP?
√ за допомогою символу ';'
за допомогою символу '#'
за допомогою символу ' за допомогою символу пробілу

Які з операторів if записані правильно з точки зору синтаксису?
√ if ($ par \u003d\u003d "") (
echo "Some text»;
$ Par + \u003d 1;
}

√ if ($ par \u003d\u003d ""):
echo "Some text»;
$ Par + \u003d 1;
endif;

if ($ par \u003d "") (
echo "Some text»;
$ Par + \u003d 1;
) Else: echo «Another text»;
endif;

Які з операторів switch записані правильно з точки зору синтаксису?

case «1»: echo «1»;
break;
case 2: echo 2;
break;
endswitch;

1: echo «1»;
2: echo 2;
}


case «1»: echo «1»;
case 2: echo 2;
default: echo 3;
}

Які з тверджень щодо оператора include вірні?
√ include використовується для включення в програму вмісту іншого файлу
√ include виконує код зазначеного в ньому файлу стільки раз, скільки разів цей оператор зустрічається в програмі
файл, що включається за допомогою include, повинен бути правильним HTML-файлом

Які з тверджень щодо оператора require вірні?
√ require використовується для включення в програму вмісту іншого файлу
при використанні всередині умовних блоків require не потрібно укладати в фігурні дужки
√ require виконує код зазначеного в ньому файлу тільки один раз

Які з циклів while записані правильно з точки зору синтаксису?
echo $ a;
$ A ++;
endwhile;

√ while ($ a< $b):
echo $ a;
$ A ++;
endwhile;

√ while ($ a< $b){
echo $ a;
$ A ++;
}

Які парадигми програмування підтримує PHP?
√ об'єктно-орієнтовану
√ процедурну
функціональну

Які кроки обов'язково потрібно виконати для того щоб встановити web-сервер Apache за допомогою програми установника?
√ запустити програму установки, погодитися з ліцензією, задати ім'я домену, ім'я сервера, e-mail адміністратора, вибрати тип установки, вибрати папку для установки сервера, запустити процес інсталяції

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

запустити програму установки


for ($ j \u003d 1; 😉
{
$ I \u003d round (9 / $ j);
switch ($ i)
{
case 5: echo «+»;
break;
case 9: echo "-";
break;
case 3: echo "!»;
break 2;
default: echo $ i;
break;
}
$ J ++;
}
?>
___________

синтаксичну помилку
√ -+!
+-!
безкінечний цикл

Яким буде результат виконання наступної програми
for ($ j \u003d 1;;)
{
$ I \u003d round (9 / $ j);
switch ($ i)
{
case 5: echo «+»;
break;
case 9: echo "-";
break;
case 3: echo "! j \u003d $ j,»;
continue 2;
default: echo $ i;
break;
}
$ J ++;
}
?>
____________

синтаксичну помилку
-+!
+-!
√ нескінченний цикл

Який оператор позначає рівність значень в мові PHP?
===
√ ==
=
:=

Коли обчислюється значення першого (expr1) і другого (expr2) виразів в циклі
for (expr1; expr2; expr3) (
// блок дій
}

expr1 - один раз на початку циклу, expr2 - один раз після завершення всіх ітерацій циклу

expr1 - щоразу на початку чергової ітерації циклу, expr2 - кожен раз в кінці ітерації циклу

√ expr1 - один раз на початку циклу, expr2 - кожен раз в кінці ітерації циклу

Написати програму, яка виводить «жирними» буквами (тег ) Рядок «Ласкаво просимо!» з використанням мови PHP.
echo «Ласкаво просимо!»;
?>


echo «Ласкаво просимо!»;
?>

echo «Ласкаво просимо!»;
?>

Відзначте скалярні типи даних, які є в мові PHP?
√ string
text
√ boolean
resource
√ float

За допомогою якого оператора можна виконувати різні дії в залежності від умови?
√ if
for
√ switch

За допомогою якої конструкції можна виконувати періодично блок дій до тих пір, поки вірно умова?
√ c допомогою циклу while
c допомогою умовного оператора if
√ c допомогою циклу for

Чим відрізняється оператор break від оператора continue?
√ break закінчує виконання поточного циклу, а continue - поточної ітерації циклу

break використовується для примусової зупинки циклів, а continue - для умовних операторів

continue не може бути викликаний з додатковим числовим аргументом, а break - може

Чим відрізняється скрипт на мові PHP від \u200b\u200bскрипта на мові JavaScript?
нічим не відрізняються
способом вбудовування в HTML-код
√ скрипт на мові JavaScript обробляється клієнтом, а PHP-скрипт - сервером

Чим відрізняються оператори require і include?
нічим
√ в разі виникнення помилки include видає попередження, а require - фатальну помилку
require не можна використовувати всередині циклів, а include - можна

Чим цикл while відрізняється від циклу do..while?
нічим
√ блок дій циклу do..while гарантовано виконується один раз
while виконує блок дій тільки один раз

Чому буде дорівнювати змінна $ result в результаті виконання наступної програми
$ Value \u003d array ( "0", »», »1");
foreach ($ value as $ v) (
if (! $ v) $ result \u003d true;
else $ result \u003d false;
}
?>

√ Array (\u003d\u003e true \u003d\u003e true \u003d\u003e false)
Array (\u003d\u003e true \u003d\u003e true \u003d\u003e true)
false, false, true

Що ми отримаємо в результаті обробки інтерпретатором файлу index.php?
7. Файл vars.php:
$ A \u003d 1;
?>
Файл index.php:
for ($ I \u003d 0; $ I< 3; $I++)
{
include ( «vars.php»);
echo $ a ++;
}
?>
________
12
123
1234
√ 111

файл
Файл vars.php:
$ A ++;
?>

Файл index.php:
$ A \u003d 0;
for ($ I \u003d 0; $ I< 3; $I++)
{
require ( «vars.php»);
echo $ a;
}
?>
__________
√ 123
0
1
помилку

файлindex. php: php $ a =
Файл index.php:
$ A \u003d 0;
for ($ I \u003d 0; $ I< 3; $I++)
{
if (file_exists ( «vars.php»)) require ( «vars.php»);
echo $ a;
}
?>
________
123
√ 000
1
помилку

Що потрібно зробити для того, щоб налаштувати PHP для роботи з сервером Apache (PHP встановлюється як серверний модуль)?
додати в httpd.conf рядка:


AddModule mod_php4.c

√ встановити в php.ini змінні doc_root, user_dir і extension_dir і додати в httpd.conf рядка:
LoadModule php4_module c: /php/sapi/php4apache.dll
AddType application / x-httpd-php .php .phtml
AddModule mod_php4.c

встановити в php.ini змінні doc_root, user_dir і extension_dir і додати в httpd.conf рядка:
ScriptAlias \u200b\u200b/ php / «c: / php /»
AddType application / x-httpd-php .php .phtml
Action application / x-httpd-php «/php/php.exe»

Що потрібно зробити, щоб отримати в браузері рядок: «PHP працює: привіт»
Ви створили php файл виду:
PHP працює:
if (1< 0) echo «привет»;
?>

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

Що таке корінь сервера Apache і де він знаходиться за замовчуванням (для windows систем)?
√ корінь сервера це директорія, файли якої обробляються сервером. Для windows систем він знаходиться в «C: / Program Files / Apache Group / Apache / htdocs»

це директорія, в якій знаходяться всі PHP скрипти сервера. Для windows систем він знаходиться в «C: / Program Files / Apache Group / Apache / htdocs»

це директорія, в якій знаходяться всі документи, які повинен обробляти сервер. Для windows систем він знаходиться в «C: / Program Files / Apache Group / Apache /»

Що таке для користувача директорія сервера і де вона знаходиться за замовчуванням (для windows систем)?
√ це директорія, виділена користувачеві для особистих потреб, файли якої обробляються сервером, якщо він отримує запит типу ~ user. Знаходиться в «C: / Program Files / Apache Group / Apache / users /»

це директорія, виділена користувачеві для особистих потреб, файли якої обробляються сервером. Знаходиться в «C: / Program Files / Apache Group / Apache / htdocs / users /»

це директорія, виділена користувачеві для особистих потреб, файли якої ніколи не обробляються сервером. Знаходиться в «C: / Program Files / Apache Group / Apache / users /»

це директорія, виділена користувачеві для особистих потреб, файли якої обробляються сервером, якщо він отримує запит типу ~ user. Знаходиться в «C: / Program Files / Apache Group / Apache / htdocs / users /»

Синтаксис PHP запозичений непосредствено з C. Java і Perl також вплинули на синтаксис цієї мови.

Перехід з HTML

Є три способи виходу з HTML і переходу в "режим PHP коду":

поділ інструкцій

Інструкції (затвердження) поділяються також як в C або Perl - крапкою з комою.

Закриває тег (?\u003e) Теж має на увазі кінець затвердження, тому такі записи еквівалентні:

типи змінних

PHP підтримує змінні таких типів:

  • integer - ціле
  • double - число з дробової частиною
  • string - строкова змінна
  • array - масив
  • object - об'єктна змінна
  • pdfdoc - PDF-документ (тільки при наявності підтримки PDF)
  • pdfinfo - PDF-інфо (тільки при наявності підтримки PDF)

Тип змінної зазвичай не встановлюється програмістом; замість цього, він визначається PHP під час виконання програми, в залежності від контексту в якому дана змінна використовується.

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

Врахуйте, що змінна може вести себе по різному в певних ситуаціях, в залежності від того, який тип визначений для неї в даний час. Більш детально це описано в розділі.

ініціалізація змінної

Для ініціалізації змінної в PHP ви просто привласнює їй значення. Для більшості змінних це саме так; для масивів і об'єктних змінних, однак, може використовуватися дещо інший механізм.

ініціалізація Масивів

Масив може инициализироваться одним з двох способів: послідовним присвоєнням значень, або за допомогою конструкції (яка описана в розділі).

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

$ Names \u003d "Jill"; // $ names \u003d "Jill" $ names \u003d "Jack"; // $ names \u003d "Jack"

Як в C і Perl, елементи масиву нумеруються починаючи з 0, а не з 1.

ініціалізація об'єктів

Для ініціалізації об'єктної змінної використовуйте новий припис для зіставлення даного об'єкта об'єктної змінної.

Class foo (function do_foo () (echo "Doing foo.";)) \u200b\u200b$ Bar \u003d new foo; $ Bar -\u003e do_foo ();

область Перемінної

Областю змінної є контекст, всередині якого вона визначена. Головним чином, всі змінні PHP мають одну область. Однак, всередині функцій певних користувачем, представлена \u200b\u200bлокальна область функції. Будь-яка змінна, певна всередині функції, за умовчанням обмежена локальною областю функції. наприклад:

$ A \u003d 1; / * Глобальна область * / Function Test () (echo $ a; / * посилання на змінну локальної області * /) Test ();

Цей скрипт не видасть щось на виході, оскільки інструкція echo відноситься до локальної версії змінної $ a, значення якої присвоюється не всередині цієї області. Ви можете помітити, що тут є певна відмінність від мови C, в тому що глобальні змінні в C автоматично діють і всередині функцій, якщо тільки вони не переписуються локальними визначеннями. Це може викликати деякі проблеми, тому що по необережності можна змінити глобальну змінну. У PHP глобальні змінні повинні бути продекларовані глобально всередині функції, якщо передбачається їх використання в даній функції. наприклад:

$ A \u003d 1; $ B \u003d 2; Function Sum () (global $ a, $ b; $ b \u003d $ a + $ b;) Sum (); echo $ b;

Вищеописаний скрипт видасть значення "3". Оскільки $ a і $ b декларуються глобально всередині функції, посилання на дані змінні трактуються як посилання на їх глобальні версії. Немає обмежень на кількість глобальних змінних, якими можна маніпулювати усередині функції.

Другим способом доступу до змінних з глобальної області є використання спеціального опеределяется PHP масиву $ GLOBALS. При цьому попередній приклад може бути записаний як:

$ A \u003d 1; $ B \u003d 2; Function Sum () ($ GLOBALS [ "b"] \u003d $ GLOBALS [ "a"] + $ GLOBALS [ "b"];) Sum (); echo $ b;

Масив $ GLOBALS є асоціативним масивом, в якому ім'я глобальної змінної є ключем, а значення цієї змінної є значенням елемента масиву.

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

Function Test () ($ a \u003d 0; echo $ a; $ a ++;)

Ця функція зовсім марна практично, оскільки кожен раз при її виклику вона встановлює $ a в 0 і виводить "0". Вираз $ a ++, яке збільшує значення змінної, так само марно, оскільки при виході з функції змінна $ a зникає. Для додання дієздатності функції підрахунку, яка не втрачала б нитка поточного рахунку, змінна $ a декларується як статична:

Function Test () (static $ a \u003d 0; echo $ a; $ a ++;)

Тепер, кожен раз при виконанні функції Test () вона буде виводити значення $ a і збільшувати його.

Статичні змінні також вельми істотні, коли функції викликаються рекурсивно. Рекурсивні функції - це ті, які викликають самі себе. Складати рекурсивную функцію потрібно уважно, тому що при неправильному написанні можна зробити рекурсию невизначеною. Ви повинні бути впевнені в адекватності способу припинення рекурсії. Наступна проста функція рекурсивно вважає до 10:

Function Test () (static $ count \u003d 0; $ count ++; echo $ count; if ($ count< 10) { Test (); } $count--; }

змінні змінні

Іноді буває зручно давати змінним змінювані імена. Такі імена можуть змінюватися динамічно. Звичайна Мінлива встановлюється так:

Змінна змінна бере якесь значення і обробляє його як ім'я змінної. У наведеному вище прикладі значення hello може бути використано як ім'я змінної, за допомогою застосування двох записаних підряд знаків долара, тобто .:

З цієї точки зору, дві змінних визначені і збережені в символьному дереві PHP: $ a з вмістом "hello" і $ hello з вмістом "world". Так, інструкція:

Echo "$ a $ ($ a)";

здійснює те ж саме, що і інструкція:

Echo "$ a $ hello";

а саме, обидві вони виводять: hello world.

Щоб використовувати змінні змінні з масивами, необхідно вирішити проблему неоднозначності. Це означає, що якщо ви пишете $$ a, то синтаксичному аналізатору необхідно знати, чи маєте ви на увазі використовувати $ a як змінних, або ви припускаєте $$ a як змінну а як індекс цієї змінної. Синтаксис для вирішення такої неоднозначності такий: $ ($ a) для першого випадку і $ ($ a) для другого.

Змінні поза PHP

HTML Форми (GET і POST)

Коли програмою-обробником форми є PHP-скрипт, змінні цієї форми автоматично доступні для даного скрипта PHP. Наприклад, розглянемо наступну форму:

Приклад 5-2. Проста змінна форми

Name:

При активізації форми PHP створить змінну $ name, значенням якої буде те вміст, який було введено в поле Name: даної форми.

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

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

Імена змінних РИСУНКА АКТИВІЗАЦІЇ

При активізації (запуск) форми можна використовувати малюнок (зображення) замість стандартної кнопки запуску, в тезі подібному цього:

Коли користувач натискає кнопку миші де-небудь над таким малюнком, що супроводжує форма передається на сервер з двома додатковими змінними, sub_x і sub_y. Вони містять координати місця натискання кнопки миші користувачем всередині даного малюнка. Можна відзначити, що практично, реальні імена змінних передаються браузером, містять точку замість символу підкреслення, але PHP конвертує точку в елемент підкреслення (underscore) автоматично.

HTTP кукис

PHP очевидним чином підтримує HTTP кукіси, як це визначено ст. Кукіси є механізмом зберігання даних в віддаленому браузері, що використовуються для підтримки процедури обміну або ідентифікації відповіді користувача. Кукіси можна встановлювати використовуючи функцію . Кукіси є частиною заголовка HTTP, тому функція повинна викликатися перш ніж будь-які дані, що передаються надсилаються браузеру. Це таке ж обмеження, як і для функції . Будь-які кукіси, що посилаються вам клієнтом, автоматично перетворюються в змінні PHP, також як дані методів GET і POST.

Якщо необхідно призначити множинні значення одному кукис, просто додайте квадратні дужки до імені кукис. наприклад:

SetCookie ( "MyCookie", "Testing", time () + 3600);

Врахуйте, що поточний кукис замінить попередній з тим же ім'ям в вашому браузері, якщо тільки шлях або домен не є різними. Тому, при роботі з програмами обслуговування карт ви можете використовувати для збереження даних лічильник і посилати його значення далі і тому подібне

Приклад 5-4. Приклад функції SetCookie

$ Count ++; SetCookie ( "Count", $ Count, time () + 3600); SetCookie ( "Cart [$ Count]", $ item, time () + 3600);

змінні оточення

PHP автоматично створює змінні оточення, як і звичайні змінні.

Echo $ HOME; / * Показує змінну оточення HOME, якщо вона встановлена. * /

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

Директиви конфігурації сервера

зміна типу

PHP не вимагає явного визначення типу при оголошенні змінної, тип змінної визначається по контексту в якому вона використовується. Тобто, якщо ви привласнюєте строкове значення змінної var , var стає рядком. Якщо потім привласнити змінної var значення цілого (числа), то вона стане цілим.

Прикладом автоматичного перетворення типу в PHP може служити оператор додавання "+". Якщо який-небудь з оперендов є числом з дробової частиною (тип double), то потім все операнди оцінюються як double і результат буде мати тип double. Інакше, ці операнди будуть інтерпретовані як цілі (integers) і результат буде так само мати тип integer. Відзначимо, що при цьому НЕ змінюються типи самих операндів, змінюється тільки оцінка цих операндів.

$ Foo \u003d "0"; // $ foo є рядком (ASCII 48) $ foo ++; // $ foo є рядком "1" (ASCII 49) $ foo + \u003d 1; // $ foo зараз є цілим (2) $ foo \u003d $ foo + 1.3; // $ foo зараз має тип double (3.3) $ foo \u003d 5 + "10 Little Piggies"; // $ foo є цілим (15) $ foo \u003d 5 + "10 Small Pigs"; // $ foo є цілим (15)

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

Останнє оновлення: 1.11.2015

При створенні першої програми на PHP вже були порушені деякі основні принципи створення скриптів на мові PHP. Тепер, розглянемо їх більш детально.

Програма або скрипт на PHP, як правило, знаходиться в файлі розширенням .php. Хоча розробники можуть також вставляти код php і в файли з розширеннями .html / .htm.

Коли користувач звертається до скрипту в адресному рядку браузера, набираючи, наприклад, http: // localhost: 8080 / display.php, То веб-сервер передає його інтерпретатора PHP. Потім інтерпретатор обробляє код і генерує на його основі html-розмітку. І потім згенерований html-код відправляється користувачеві.

Документ PHP може містити як розмітку html, так і код на мові php. Для переходу від розмітки html до коду php використовуються теги , Між якими йде код php. Дані теги служать зазначенням інтерпретатора, що їх вміст треба інтерпретувати як код php, а не розмітку html.

Також можна використовувати коротку версію тегів: . Для цього в файлі php.ini треба змінити значення short_open_tag \u003d Off на short_open_tag \u003d On

Розглянемо найпростіший скрипт на php:

Веб сайт Привіт світ!

"; Echo" 2 + 2 \u003d ". (2 + 2);?\u003e

Після обробки файлу інтерпретатор сформує наступну розмітку:

Веб сайт

Привіт світ!

2 + 2 = 4

Тут використані дві інструкції echo "

Привіт світ!

"І echo" 2 + 2 \u003d ". (2 + 2), який виводять певне значення на сторінку. Кожна окрема інструкція в PHP завершується крапкою з комою.

Теги PHP

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

парсером PHP.

PHP також допускає короткі теги , Проте використовувати їх небажано, так як вони доступні тільки якщо включені за допомогою конфігураційної директиви php.ini short_open_tag, Або якщо PHP був налаштований з опцією --enable-short-tags .

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

Ізолювання від HTML

Все, що знаходиться поза пари відкривається і закривається тегів,

ігнорується інтерпретатором PHP, у якого є можливість обробляти файли зі змішаним вмістом. Це дозволяє PHP-коду бути вбудованим в документи HTML, наприклад, для створення шаблонів.

цебуде проігноровано PHP і відображено браузером.

Це теж буде проігноровано PHP і відображено браузером.

Це працює так, як і очікується, тому що коли інтерпретатор PHP зустрічає закривають теги?\u003e, Він просто починає виводити все що знайде поки не зустріне інший відкриває тег за винятком випадку із які всередині коду умовним оператором, в якому інтерпретатор визначає результат умови перед прийняттям рішення що пропустити.

Використання структур з умовами

Це буде відображено, якщо вираз істинний. В іншому випадку буде відображено це.

Приклад №1 Просунуте ізолювання з використанням умов

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

При виведенні великих блоків тексту вихід з режиму синтаксичного розбору PHP зазвичай більш ефективний, ніж відправка тексту за допомогою функцій echo або print.

Існує чотири набори тегів, які можуть бути використані для позначення PHP-коду. З них тільки два і ) Завжди доступні. Іншими двома є короткі теги і теги в стилі ASP, які можуть бути включені або виключені в конфігураційному файлі php.ini.Хоча короткі теги і теги в стилі ASP можуть бути зручні, вони не так стерпні, як довгі версії, і тому не рекомендуються. Крім того, якщо ви маєте намір вставляти PHP-код в XML або XHTML, щоб відповідати XML стандартам, вам слід використовувати форму .

1. 2. 3. Це синонім для "" 4. <% echo "Вы можете по выбору использовать теги в стиле ASP"; %> <%= $variable; # Это синоним для "<% echo . . ." %>

Короткі теги (третій приклад) доступні, тільки коли вони включені за допомогою директиви short_open_tagв конфігураційному файлі php.ini, Або якщо PHP було скомпільовано з опцією --enable-short-tags.

Теги в стилі ASP (четвертий приклад) доступні, тільки коли вони включені за допомогою директиви asp_tagsв конфігураційному файлі php.ini.

зауваження:

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

поділ інструкцій

Як в C або Perl, PHP вимагає закінчення інструкцій точкою коми в кінці кожної інструкції. Закриває тег блоку PHP-коду автоматично застосовує крапку з комою; тобто немає необхідності ставити крапку з комою в кінці останнього рядка блоку з PHP-кодом. Закриває тег блоку "поглине" негайно наступний за ним перехід на новий рядок, якщо такий буде виявлений.

зауваження:

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

Коментарі

PHP підтримує коментарі в стилі "C", "C ++" і оболонки Unix (стиль Perl). наприклад:

Однорядкові коментарі йдуть тільки до кінця рядка або поточного блоку PHP-коду, в залежності від того, що йде перед ними. Це означає, що HTML-код після // ... ?> або # ... ?> буде надруковано: ?> завершує режим PHP і повертає режим HTML, а // або # не можуть вплинути на це. Якщо включена директива asp_tags, То аналогічна поведінка буде і з // %> і # %> . Однак, тег завершує режим PHP в однорядковому коментарі.

це приклад

Тема вгорі виведе "Це приклад".

"C" -Коментарі закінчуються при першій же виявленої послідовності */ . Переконайтеся, що ви не вкладаєте один в одного "C" -Коментарі. Дуже легко допустити цю помилку при коментуванні великого блоку коду.

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

$ a== $ b// TRUEякщо $ aодно $ B.

$ a=== $ b// TRUE якщо $ a дорівнює $ b І має той

же тип

$ a!= $ b// TRUE якщо $ a не дорівнює $ b.

$ a!== $ b// TRUE якщо $ a не дорівнює $ b АБО в

випадку, якщо вони різних типів.

$ a< $ b// TRUE якщо $ a строго менше $ b.

$ a> $ b// TRUE якщо $ a строго більше $ b.

$ a<= $ b// TRUE якщо $ a менше або дорівнює $ b.

$ a>= $ b// TRUE якщо $ a більше або дорівнює $ b.

Оператори: логічні

$ aand$ b// TRUEякщоі $ A,і $ B TRUE.

$ aor$ b// TRUEякщоабо $ A,або $ b

! $ a// TRUEякщо $ aнЕ TRUE.

$ a&& $ b// TRUEякщоі $ A,і $ B TRUE.

$ a|| $ b// TRUEякщоабо $ A,або $ b

$ aand$ band$ C; $ aand$ bor$ c

$ aand($ band$ c)  $ aand$ b&& $ c

$ aand($ bor$ c)  $ aand$ b|| $ c

типи даних

PHP підтримує вісім простих типів.

Чотири скалярних типу:

    float (число з плаваючою точкою, також відоме какdouble)

Два змішаних типу:

Два спеціальних типу:

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

зауваження:

Якщо ви бажаєте перевірити тип і значення певного виразу, використовуйтеvar_dump ().

Якщо ж вам для налагодження необхідно просто удобочитаем уявлення типу, використовуйтеgettype (). Щоб перевірити на певний тип,нЕ використовуйтеgettype (), Застосовуйте для цьогоis_type функції.

Якщо ви хочете примусово змінити тип змінної, ви можете або прівестіпеременную, або використовувати функцію settype ().

Зверніть увагу, що змінна, в залежності від її типу в наразі, В певних ситуаціях може мати різні значення.

логічний тип

Це найпростіший тип. booleanвисловлює істинність значення. Він може бути або TRUE або FALSE.

Для вказівки boolean, використовуйте ключове слово TRUE або FALSE. Обидва регістру незалежні.

Зазвичай, деякий операторвозвращает boolean значення, яке потім передається керуючої конструкції.

\\ N ";) // ... тому що наступне має той же самий сенс: if ($ show_separators) (echo"


\\ N ";)?\u003e

Для явного перетворення в boolean, використовуйте (Bool) або (Boolean). Однак, в більшості випадків приведення типу необов'язково, так як значення буде автоматично перетворено, якщо оператор, функція або керуюча конструкція вимагає boolean аргумент.

При перетворенні в boolean , Такі значення розглядаються як FALSE:

    саме значення booleanFALSE

    integer0 (нуль)

    float0.0 (нуль)

    порожній рядок, істрока "0"

    массівбез елементів

    об'ектбез полів (тільки для PHP 4)

    особливий тип NULL (включаючи невстановлені змінні)

    Об'єкти SimpleXML, створені з порожніх тегів

Всі інші значення розглядаються як TRUE (Включаючи будь-який resourceа також число -1).

Цілі числа

Integer- це число з безлічі ℤ \u003d (..., -2, -1, 0, 1, 2, ...).

Цілі можуть бути вказані у десятковій, шістнадцятковій або вісімковій системі числення, за бажанням з попереднім знаком (- або +).

Якщо ви використовуєте вісімкову систему числення, ви повинні випередити число 0 (нулем), для використання шістнадцятковій системи потрібно поставити перед числом 0x.

Приклад №1 Цілі

Розмір цілого залежить від платформи, хоча, як правило, максимальне значення близько двох мільярдів (це 32-бітове знакове). PHP не підтримує беззнакові цілі.

Перевищення розміру цілого

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

У PHP не існує оператора ділення цілих. результатом 1/2 буде число з плаваючою точкою 0.5 . Ви можете привести значення до цілого, що завжди округлює його в меншу сторону, або використовувати функцію round ().

Числа з плаваючою точкою

Числа з плаваючою точкою (вони ж числа подвійної точності або дійсні числа) можуть бути визначені за допомогою будь-якого з наступних синтаксисів:

Рядок - це набір символів. У PHP символ це те ж саме, що і байт, це означає, що можливо рівно 256 різних символів. Це також означає, що PHP не має вбудованої підтримки Unicode "а. Деяку підтримку Unicode" а забезпечують функції utf8_encode () іutf8_decode ().

зауваження:

Немає ніяких проблем, якщо рядок дуже велика. Практично не існує обмежень на розмір рядків, що накладаються PHP, так що немає абсолютно ніяких причин турбуватися про їх довжині.

Рядок може бути визначена трьома різними способами.

    одинарними лапками

    подвійними лапками