|
( type Juggling, type Casting, type Conversion )
PHP не поддържа изрично дефиниране на типа при декларирането на променлива. Типът на променливата зависи от контекста, в който се използва. С други думи, ако присвоите стринг на променливата $var, $var става от тип стринг. Ако в последствие присвоите целочислена стойност на $var, то тя става целочислена променлива. В този урок ще разгледаме манипулациите с типовете данни в PHP. Става въпрос за начините по кито можем да укажем на PHP както какъв тип да третира дадени данни, както и за начините на преобразуване на един тип в друг. Преобразуването на типове е допустимо във всички възможни комбинации, от конвертиране на integer във float, масиви в обекти ... до стринг в двоични (binary) данни в PHP 5.2.1. Това е начин да се избегне извикането на различни функции и в крайна сметка скрипта да стане по-малък и бърз. Пример за преобразуване на тип: CODE
Тук $szMyString ще приеме стойност "5" като стринг макар, че няма кавички около ‘5’. Това е начина за промяна на типа на данни, но нека да видим в какви ситуации бихме могли да го използваме. Има различни случаи в които преобразуването на типа е много удобен начин за създаването на кратък, бърз и ясен код. Нека да приемем, че ни е необходима функция, която проверява синтаксиса на URL. В тази примерна функция е използван малък регулярен израз и стандартната функция preg_patch() за да провери дали подадения URL започва с “http://” CODE
В този случай preg_patch() обаче връща 1 или 0 вместо true или false, както би ни се искало. За да се придържаме към стандарта ние бихме искали функцията която прави проверка да връща логическа стойност. Тук конвертирането на типа е идеалното решение: CODE
Просто добавяме (boolean) и функцията започва да връща коректно само логически стойностти. Сега можем да сме сигурни, че резултатът може да бъде само true или false, тоест можем да използваме функцята в логиески изрази. За съжаление в PHP има много вградени функции, които в различни ситуации връщат тазлични типове данни. Това е доста необичаен подход и усложнява програмирането, но преобразуването типа на резултата обикновено може да реши проблема. Да видим няколко примера за преобразуване на типове: CODE
Първите 4 примера са напълно ясни. Последните два обаче не съвсем. Общо взето преобразуването на обекти в масиви и обратно е по-сложно. По-ясно е конвертирането между едномерен асоциативен масив и обект. Можем да използваме синтаксис за достъп до public променлива в обект или до елемент от масив. Ето как можем да получим стойноста на Item от горния пример: CODE
Обектноориентираното програмиране става все по-популярно, а обектите в PHP все повече се предпочитат пред масивите, но едва ли скоро масивите ще излязат от употреба поради богатия набор от функции за работа с тях. Това е всичко което е необходимо да знаете за манипулирането на типовете данни в PHP. Въпреки, че може никога да не ви се наложи да използвате изрично задаване на тип на променлива, вие ще знаете как можете да превърнете всичко във всичко. Източник: talkphp.com
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









