Как мы уже знаем, в PHP нет необходимости указывать тип какой-либо переменной или выражения явно. Однако, как мы видели, с каждой величиной в программе все же ассоциирован конкретный тип, который, впрочем, можно поменять в процессе выполнения программы. Такие "подмены" будут вполне осмысленными, если, например, мы к строке "20" прибавим число 10 и получим результат 30 (а не "2010") — это хороший пример того, как PHP выполняет преобразования из числа в строку и наоборот. Но представьте себе, что мы хотим привести тип переменной $a к числу, а она на самом деле — массив. Ясно, что такое преобразование лишено всякого смысла — о чем вам и сообщит (в лучшем случае) PHP, если вы попытаетесь, например, прибавить $a к 10. А может и не сообщить (скажем, если перевести массив в строку, то всегда получится строка "Array"). В то же время, дальше, когда мы будем рассматривать стандартные функции и операторы PHP (которых, кстати, очень много), мне в большинстве мест придется разъяснять, какой тип имеет тот или иной параметр функции или оператора, причем все другие несовместимые с ним типы должны быть исключены. Также было бы полезным обозначить явно тип возвращаемого значения функций. В этой связи, подражая оригинальной документации по PHP, будут указываться типы переменных и функций там, где это необходимо, а также некоторые другие метасимволы. Вот пример описания функции по имени FuncName
:
<return_type> FuncName(<type1> $param1 [,<type2> $param2])
Функция делает то-то и то-то. Возвращает то-то. Здесь должно быть приведено описание функции, возвращающей значение типа <return_type>
и принимающей один или два аргумента (второй аргумент необязательный, на что указывают квадратные скобки). Тип первого параметра <type1>
, а второго — <type2>
. Описание возможных типов, которые здесь выделены угловыми скобками, приводится в следующих подразделах.
string
— обычная строка, или тип, который можно перевести в строку.int, long
— целое число, либо вещественное число (в последнем случае дробная часть отсекается), либо строка, содержащая число в одном из перечисленных форматов. Если строку не удается перевести вint
, то вместо нее подставляется 0, и никаких предупреждений не генерируется!double, float
— вещественное число, или целое число, или строка, содержащая одно из таких чисел.bool
— логический тип, который будет восприниматься либо как ложь (нулевое число, пустая строка или константаfalse
), либо как истина (все остальное). Обычно редко указывается этот тип (вместо него пишутint
, хотя это и неверно).array
— массив, в общем случае ассоциативный (см. ниже). То есть набор пар ключ=>значение. Впрочем, здесь может быть передан и списокlist
.list
— обычно это массив с целыми ключами, пронумерованными от 0 и следующими подряд. Так как список является разновидностью ассоциативного массива, то обычно вместо параметров функций типаlist
можно подставлять и параметры типа array.-
При этом, скорее всего, функция "ничего не заметит" и будет работать с этим массивом как со списком, "мысленно" пронумеровав его элементы. Можно также сказать, что список представляет собой упорядоченный набор значений (который можно, например, отсортировать в порядке возрастания), тогда как ассоциативный массив — упорядоченный набор пар значений, каждую из которых логически бессмысленно разъединять.
object
— объект какой-то структуры. Обычно эта структура будет уточняться.void
— пожалуй, самый простой тип, который применяется только для определения возвращаемого функцией значения, его можно охарактеризовать так: "Не возвращает ничего ценного". В PHP функция не может ничего не возвращать (так уж он устроен), поэтому практически всеvoid
-функции возвращаютfalse
(то есть пустую строку).mixed
— все, что угодно. Это может быть целое или дробное число, строка, массив или объект... Например, параметр типаmixed
имеет стандартная функцияgettype()
или функцияsettype()
. Если написано, что функция возвращает mixed, это значит, что тип результата зависит от операндов и уточняется при описании функции.
Внимание! При написании функций ни в коем случае не набирайте эти имена типов! Они нужны только для того, чтобы уточнить синтаксис какой-то функции.
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться