В този урок ще се запознаем в променливите в PHP, но първо да обясним какво са те по принцип и каква е ролята им в програмните езици.

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

Без променливите не можете да напишете нито едно практично приложение, без значение колко просто е то. Да кажем, че вие разработвате даден сайт, който позволява на потребителите да качват галерия със снимки. Тези снимки, след като потребителите ги качат от настолните си компютри, трябва да бъдат записани в дадена папка на самия твърд диск на сървъра (чисто физически). Вие трябва да укажете в PHP пътя към тази папка. Можете да укажете абсолютния път и кодът ще работи, но ако в даден момент вие желаете да смените мястото, където се качват снимките, вие трябва да обходите целия код и да смените навсякъде местоположението, което може да е много времеемко занимание. По време на този процес вероятността за грешка се увеличава, а пък и нямате никаква динамика.

Ако използвате променлива, този проблем ще бъде решен, защото можете да закачите пътя до папката към тази променлива. Вместо да пишем навсякъде в кода си пътя, пишем променливата и ако на по-късен етап се наложи да променим този път, ние трябва да го променим само на едно място, вместо да обхождаме навсякъде кода и да търсим по файловете. Автоматично, на всяко едно място, където е използван старият път, ще бъде използван новият. Това ни спестява време, усилия и нерви, а вероятността за грешки намалява.

 

Другото предимство на променливите е, че можем динамично да им присъединяваме стойности навсякъде в кода. Тяхното използване е доста лесно, а в тях може да се записва всичко - текст, числа, снимки, обекти, ресурси и всичко, което компютрите разбират. Има някои особености и ограничения, но за тях ще разберете в следващите уроци.

Променливите в PHP се създават изключително лесно, а в някои случаи няма нужда дори да бъдат създавани. С това имам предвид, че има силно типизирани езици и слабо типизирани езици. PHP е един от най-слабо типизираните езици.

Например в силно типизирани езици, каквито са JAVA & .net, вие първо трябва да създадете дадена променлива и да укажете каква да бъде тя - тоест да съдържа само текст или числа в зависимост от това, което ни е необходимо. Ако вие се опитате да присъедините например текст на променлива, която може да съдържа само числа, ще настъпи грешка и кодът няма да работи.

Предимствата на силно типизираните езици са много, но има и някои недостатъци.

При PHP ситуацията не е такава - при него създаваме променливата и към нея можем да присъединим абсолютно всичко, няма нужда да определяме типа на променливата. Предимството на това е, че кодът се пише доста бързо, но голям недостатък е, че понякога можем да очакваме текст, а да получим число като стойност и това да не е желаният от нас резултат. Затова могат да се получат някои много странни логически грешки, които понякога са трудни за откриване и отстраняване, но има някои прости техники, с които тези проблеми се решават бързо и лесно.

Ние трябва да дадем име на променливата, за да можем да я ползваме. Имената на променливите в PHP нямат почти никакво ограничение - могат да се ползват всички латински символи и числа от 0 до 9, включително и долна черта ( _ ), но с една малка уговорка - имената на променливите в PHP не могат да започват с число.

Тоест променливата $username е валидна, но променливата $0username не е валидна, защото името ѝ започва с число.

Не можете да използвате специални символи като долар, процент и така нататък, защото те имат друг смисъл в този програмен език.

Практически пример за променливите

В PHP, когато създаваме променлива, ние първо трябва да създадем нейното име, а то задължително започва със знака долар ($). След този символ ние пишем самото име на променливата, например:

<?php

$username;

?>

В този пример ние създадохме празна променлива, която се казва $username. Точката и запетаята ( ; ) , които стоят след името на променливата са задължителни.

Създадената от нас променлива към момента няма никаква стойност, защото в момента не сме присъединили стойност към нея. Ако желаем да присъединим стойност, слагаме знака равно ( = ):

<?php

$username='php-nation.com';

?>

В този пример имаме променлива, която носи името $username и има стойност php-nation.com . Можем да използваме функцията echo, за която поговорихме в предишния урок, за да проверим дали можем да извикаме тази променлива. Това става по следния начин:

<?php

$username='php-nation.com';

echo $username';

?>

В този пример, ако отворите файла в браузъра, би трябвало да видите текста, който се съдържа между единичните кавички ( '' ) , тоест да видите в конкретния пример изписано php-nation.com.

Ако погледнете изходния код в браузъра ще видите, че към браузъра е изпратен резултата от php кода, а не самият php код. Но вижте какво се случва тук:

<?php

$username='php-nation.com';  (1)

echo $username'; (2)

?>

На ред (1) ние присъединяваме стойност към променливата $username.

На ред (2) извикваме променливата $username и се визуализира нейната стойност.


 

Можем да извикваме променливата колкото пъти желаем, няма никакви ограничения в това:

<?php

$username='php-nation.com';

echo $username.'<br/>';

echo $username;

echo $username;

?>

В настоящия пример ще извикаме три пъти стойността на променливата $username и би трябвало в браузъра да видите следното нещо:

php-nation.comphp-nation.comphp-nation.com

Обърнете внимание, че стойностите php-nation.com не се показват една под друга, а една до друга и това е става така, защото не сме сложили HTML код, който да играе ролята на разделител. Ето как ще изглежда нашият код, ако сложа разделител:

<?php

$username='php-nation.com';

echo $username.'<br/>';

echo $username.'<br/>';

echo $username.'<br/>';

?>

В случая разделителят е html тагът <br/>, добавен по този специален начин .'<br/>' към php кода. Така написаният код ще се визуализира по следния начин в браузъра:

php-nation.com
php-nation.com
php-nation.com


По-нататък ще поговорим защо е необходимо да се слага точка и да бъдат в кавички въпросните html тагове. Но ето още една особеност при променливите, напишете следния код:

<?php

$username='php-nation.com';

echo $username.'<br/>';

echo $username.'<br/>';

$username='testasdqw';

echo $username.'<br/>';

?>

Единствената разлика между предишния и този код е наличието на $username='testasdqw'; . Това е пример за много важно свойство на променливите да бъдат променяни. В примера можете да видите, че променливата може да бъде променена на по-късен етап в кода.  Ето как става всичко с обяснения:

<?php

$username='php-nation.com'; (3)

echo $username.'<br/>'; (4)

echo $username.'<br/>'; (5)

$username='testasdqw'; (6)

echo $username.'<br/>'; (7)

?>

При (3) създаваме променлива и ѝ присвояваме стойност php-nation.com. При стъпка (4) извикваме стойността, която сме присвоили. При стъпка (5) правим същото. При стъпка (6) променяме стойността на променливата и извиквайки я при стъпка (7) ние вече извикваме новата ѝ стойност, която е testasdqw. Това, което току-що направихме, се нарича презаписване на стойността на променливата. При всяко последващо извикване на променливата $username ще бъде показана стойността ѝ testasdqw, защото, както обяснихме, PHP чете кода отгоре-надолу, което означава, че всичко, което е на по-долния ред, може да презаписва това, което е на по-горния, ако това разбира се е желано от разработчика на приложението.

Обърнете внимание, че при презаписването на променливата старата стойност се изтрива и на нейно място се използва новата и няма никакъв начин, по който ние да възстановим старата стойност, така че трябва да бъдем особено внимателни.


 

Валидни имена на променливите и грешки при наименуването

Името на променливата не може да започва с число, пример:

<?php

$0test;

?>

При изпълнението на този код ще получите грешка. Числата могат да стоят навсякъде, но не и на първо място в кода. Няколко валидни примера за имена на променливи:

<?php

$t0est;

?>

или

<?php

$te0st;

?>

, или

<?php

$test0;

?>

и така нататък.

Ако все пак желаем непременно първият символ в името на нашата променлива да бъде число, то името ѝ трябва да започва с долна черта, тоест:

<?php

$_0;

?>

Долната черта може да бъде навсякъде и да я използвате колкото пъти желаете в името на променливата. Запомнете, че не бива да използвате други символи в името на променливата като §,  %, *, (, както и много други, защото те имат друг смисъл в този програмен език. Променливата не може да съдържа и празно място (интервал) в името си.

Името на променливата няма никакво значение за компютрите - за тях това е просто текст. Но има огромно значение за програмистите, защото е добра практика имената на променливите да казват какво прави въпросната променлива. Когато променливата не е достатъчно описателна, е трудно да се разбере какво точно прави променливата. При неясните имена на променливите от типа на x, y, abc, dd и така нататък е трудно да се работи, ако проектът е голям.

Пример: ако искаме променливата да съдържа информация за снимка на потребителя, наименувайте я $image_info или нещо от този сорт, за да знаете какво точно се съдържа в тази променлива.

За какво служи ( ; ) в кода на PHP?

; в PHP има специално значение - показва край на логически ред. Слагането ѝ е необходимо, защото PHP чете файла ред по ред (не физически, а логически ред) и при липсата ѝ се получава конфликт със синтаксиса на PHP. При слагането на ; казваме на PHP, че там свършва даден логически ред.