Головна PHP Синтаксис PHP
Синтаксис PHP
Синтаксис PHP багато в чому запозичений з таких мов як C, Java і Perl. Тому, якщо ви знайомі хоча б однією з них - вам не складно буде просто сісти і почати писати програми на PHP. Тут ми детально не зупинятимемося на описі синтаксису - він добре описаний в PHP Manual. Проте мені хотілося б зупинитися на деяких аспектах, які відрізняють PHP від інших мов.

Імена змінних

Будь-яка змінна в PHP має ім'я, що починається із знаку $, наприклад $variable. Людям, які звикли до C/С++-подібним мовам цей принцип іменування змінних може здатися дивним, але насправді такий підхід має певні переваги. При такому способі формування імен змінних їх дуже легко відрізнити від остального коду. Якщо в інших мовах інколи може виникати плутанина з тим, що при першому погляді на код не завжди ясно - де тут змінні, а де функції, то в PHP це питання навіть не встає. Даний принцип дозволяє дуже просто і елегантно реалізувати функціональність, просто недоступну інакше. Наприклад, ссилка на змінну по її імені, що зберігається в іншій змінній:

$name = "value";
$value = 5;
echo $$name;

В даному прикладі PHP виведе результат 5. Такі фокуси стали можливі із-за закладеного в PHP принципу: “anything is an expression” (будь-яка річ є виразом). Виходячи з цього PHP сприймає вираз $$name таким чином: парсер зустрічає символ $, а це означає, що наступний вираз є ім'ям змінної. Парсер зустрічає ще один символ $, і продовжує пошуки імені вже іншій змінній, значення якої необхідне для обчислення значення попереднього вирзу. Парсер отримує ім'я name, знаходить змінну з таким ім'ям, бере її значення (‘value’) і повертається назад. Оскільки на попередньому кроці ми шукали ім'я змінної, те значення тільки що обчисленого виразу сприймається саме як ім'я змінної. Парсер шукає змінну з таким ім'ям (value) і повертає її результат (5).
Як бачите, це дуже гнучка система і при невеликому тренуванні ви зможете творити дива з її допомогою! Адже так само можна оперувати з будь-якими елементами мови, що мають ім'я, тобто наприклад викликати метод класу по його імені, що міститься в змінній.

Рядки

Можливість однозначно ідентифікувати змінну дозволила розробникам PHP дати можливість програмістам використовувати змінні безпосередньо усередині рядків!
Приклад подібного використання:

$name = "john";
$age = 23;
echo "$name is $age years old";

Як результат ми отримаємо рядок: John is 23 years old. Це дуже зручно. Проте необхідно звернути вашу увагу на одну деталь - в PHP, на відміну від багатьох інших мов, розрізняються рядки, взяті в одинарні і подвійні лапки. І подібне заміщення імен змінних їх значеннями виробляється лише в рядках, взятих в подвійні лапки!
Дуже важливо завжди пам'ятати про це, щоб уникнути помилок. Рядки в подвійних лапках можуть містити і складніші вирази. Для цього необхідно вкласти їх у фігурні дужки:

$man = array("john",23);
echo "{$man[0]} is {$man[1]} years old";

Результат буде таким же, як і в попередньому прикладі. Ще однією цікавою особливістю роботи PHP з рядками є підтримка так званого способу here docs. Нижче наведений приклад:

$var="PHPist";
$text=<<HERE <span>$var</span>
HERE;
echo $text;
?>

В цьому випадку значенням змінної буде весь текст, що міститься між початковим і кінцевим маркерами (в даному випадку це рядок HERE, але цей маркер може бути будь-якою послідовністю символів). Ознакою того, що це here doc, є наявність << безпосередньо після знаку присвоєння. Даний механізм дуже зручний у випадку, якщо рядку необхідно присвоїти якийсь складний текст, особливо, якщо необхідно зберегти його форматування. До речі, в разі використання here docs ви також маєте можливість використання змінних усередині рядка як це було описано раніше.

 

Масиви

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

$data = array(1,10,100,1000, // Чисельні дані
"some text","another text", // Строкові дані
"name"=>"john","age"=>23, // Асоціативні зв'язки в масиві
"date"=>array('day'=>10,'month'=>'may','year'=>2001)); //Вкладений масив

Як бачите - різні дані можуть бути поєднані разом в єдиній структурі без яких-небудь проблем! Подивимось, як можна звернутися до цих даних:

 

echo $data[1]; // Результат - 10
echo $data[5]; // Результат - 'another text'
echo $data['age']; // Результат - 23
echo $data['date']['month']; // Результат - 'may'

Велика кількість інформації і прикладів, а також описи функцій для обробки масивів можна знайти в PHP Manual.

Variable scope

Англійський термін, винесений в заголовок перекладається на український як “область видимості змінної”. Під цим терміном мається на увазі те, що будь-яка змінна, описана в програмі має свою зону видимості, іншими словами якщо змінна описана в якомусь місці програми, то це зовсім не означає, що вона автоматично стає видимою в будь-якому іншому місці цієї програми. В PHP із цього приводу є свої особливості. “Найдивніша” річ, з якою стикається людина при знайомстві з PHP це те, що змінна, описана поза функцією невидима всередині неї! У інших мовах програмування ми звикли до того, що глобальні змінні програми видно скрізь, але в PHP це не так. Але поглянувши на це “дивацтво” уважніше можна відмітити, що вона має більше вигоди, ніж незручностей, оскільки є свого роду “захисним механізмом”, який не дозволить вам випадково переплутати локальну і глобальну змінну, що часом приводить до дуже тяжких наслідків. Як же дістати доступ до глобальних змінних з функції?
Є 2 способи зробити це:

1. Використовувати суперглобальний асоціативний масив $GLOBALS. Це єдина змінна в PHP, яка видима звідусіль і яка містить в собі всі глобальні змінні, наявні в програмі. Якщо ви усередині функції звертаєтеся до змінної $variable – то це ви звертаєтеся до локальної змінної, а якщо

$GLOBALS[’variable’] - то до глобальної.
function myfunction() { $variable = 5; // Присвоюємо значення локальної змінної $GLOBALS[''variable''] = 10; // Присвоюємо значення глобальної змінної };

2. Використовувати ключове слово global. Воно дозволить вам задати список глобальних змінних, які будуть видимі всередині функції:

function myfunction() {
global $variable; // Присвоюємо значение глобальній змінній
$variable = 10;
};
 

Додати коментар


Захисний код
Оновити

© 2008-2013 PHPist