Відмінності між версіями «Змінні та типи данних в PHP»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 11: Рядок 11:
 
echo $$name;</font></code>
 
echo $$name;</font></code>
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;В даному прикладі PHP виведе результат 5. Такі фокуси стали можливі із-за закладеного в PHP принципу: “anything is an expression” (будь-яка річ є виразом). Виходячи з цього PHP сприймає вираз $$name таким чином: парсер зустрічає символ $, а це означає, що наступний вираз є ім'ям змінної. Парсер зустрічає ще один символ $, і продовжує пошуки імені вже іншій змінній, значення якої необхідне для обчислення значення попереднього вирзу. Парсер отримує ім'я name, знаходить змінну з таким ім'ям, бере її значення (‘value’) і повертається назад. Оскільки на попередньому кроці ми шукали ім'я змінної, те значення тільки що обчисленого виразу сприймається саме як ім'я змінної. Парсер шукає змінну з таким ім'ям (value) і повертає її результат (5).
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;В даному прикладі PHP виведе результат 5. Такі фокуси стали можливі із-за закладеного в PHP принципу: “anything is an expression” (будь-яка річ є виразом). Виходячи з цього PHP сприймає вираз $$name таким чином: [[парсер]] зустрічає символ $, а це означає, що наступний вираз є ім'ям змінної. Парсер зустрічає ще один символ $, і продовжує пошуки імені вже іншій змінній, значення якої необхідне для обчислення значення попереднього вирзу. Парсер отримує ім'я name, знаходить змінну з таким ім'ям, бере її значення (‘value’) і повертається назад. Оскільки на попередньому кроці ми шукали ім'я змінної, те значення тільки що обчисленого виразу сприймається саме як ім'я змінної. Парсер шукає змінну з таким ім'ям (value) і повертає її результат (5).
 
Як бачите, це дуже гнучка система і при невеликому тренуванні ви зможете творити дива з її допомогою! Адже так само можна оперувати з будь-якими елементами мови, що мають ім'я, тобто наприклад викликати метод класу по його імені, що міститься в змінній.  
 
Як бачите, це дуже гнучка система і при невеликому тренуванні ви зможете творити дива з її допомогою! Адже так само можна оперувати з будь-якими елементами мови, що мають ім'я, тобто наприклад викликати метод класу по його імені, що міститься в змінній.  
  

Версія за 07:53, 30 квітня 2010

Змінна - це літерно-символьне подання частини інформації, яка перебуває в пам'яті в Web-сервера.

В php змінна виглядає ось так:

$names="я інформація в пам'яті тчк";

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

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

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

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

Всі змінні діляться на певні типи:

Змішані типи даних

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

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

     Також, існують два спеціальні типи даних — ресурс та NULL. Ресурс — спеціальна змінна, що містить посилання на зовнішній ресурс. Ресурси створюються та використовуються в спеціалізованих функціях. Оскільки тип містить спеціальні вказівники на відкриті файли, під'єднання та інше, то будь-які дії над значенням ресурсу не мають сенсу.

     Область видимості змінної — середовище, в якій вона визначена. Розрізняють локальні та глобальні змінні. За замовчуванням, всі змінні мають локальний характер дії. Виділяють особливий тип змінних — статичні, що дозволяє повторне звернення до змінної в певному сегменті коду, причому змінна буде зберігати попередньо отримане значення. Існує також поняття суперглобальний змінних, які є місцем збереження даних оточення або даних, отриманих ззовні. Підтримується концепція динамічних змінних та функцій.

     Константи в PHP — ідентифікатори простих значень. Можливе визначення константи, причому після її оголошення стає неможливою зміна її значення чи анулювання. Константи можуть мати лише скалярні значення. Підтримується можливість отримання значення константи за динамічним ім'ям. Область видимості констант буде глобальною для сценарію та всіх під'єднаних компонентів. Також в ядрі мови визначено чимало системних констант.

В PHP значення змінних може бути отримане в такий спосіб:

1. заздалегідь визначено web-програмістом;
2. отримано в результаті виконання веб-сервером функцій/операцій;
3. отримано через запит браузера методом Get або Post.

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

Період дії(існування) змінних

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

     Якщо, наприклад, меню сайту перебуває в базі даних MySQL, то при кожному запиті користувача (переходу зі сторінки на сторінку) web-сервер, виконуючи код PHP, буде запитувати з бази даних інформацію з меню й заносити її в одну й ту саму змінну.

     Чому ж тоді всі сторінки різні, якщо всі змінні починаються з нуля? Тому що, коли користувач натискає на посилання він передає web-серверу змінну з певним значенням. А веб-сервер, щоразу при виконанні коду PHP перевіряє на існування змінної з певним значенням і якщо вона існує, то виконує певний сценарій. І в результаті ви отримуєте іншу сторінку. Так як, веб-сервер, виконав код PHP по іншому сценарію.




Перейти до Інтернет-програмування