Умненький ты наш...
CryoMonsteR 07.05.2002 16:17
А сюда вынести слабо было ? :) Вот что там написано про переменные:
Переменные
Переменные могут хранить данные следующих типов:
строка (string);
число (int/double);
истина/ложь;
хеш (ассоциативный массив);
класс объектов;
объект класса (в т.ч. пользовательского);
код;
выражение.
В зависимости от того, что будет содержать переменная, для присвоения ей значения используются различные типы скобок:
$имя_переменной[строка]
переменной присваивается строковое значение (объект класса string) или результат работы кода
$имя_переменной(выражение)
переменной присваивается число или результат математического выражения
$имя_переменной{код}
переменной присваивается фрагмент кода, который будет обработан в дальнейшем
Для получения значения переменных используется обращение к имени переменной:
$имя_переменной - получение значения переменной
Для использования переменных не требуется их заранее объявлять.
В качестве части имени может быть использовано…
…значение другой переменной:
$superman[value of superman variable]
$part[man]
$super$part
Возвратит: value of superman variable
$name[picture]
${name}.gif
Возвратит строку picture.gif, а не значение поля gif объекта picture.
…результат работы кода:
$field.[b^eval(2+3)]
Возвратит значение поля b5 объекта field.
Примечание: у классов также существуют системные поля:
$self - хранит ссылку на текущий экземпляр объекта класса, в статических методах хранит то же, что и $CLASS. Может использоваться, например, для предотвращения конфликтов имен в случае, если имя параметра метода совпадает с именем статического поля класса.
Пример:
@main[]
$a[Статическое поле ^$a класса MAIN]
^test[Параметр метода]
@test[a]
^$a - $a <br>
^$self.a - $self.a
Выведет:
$a - Параметр метода
$self.a - Статическое поле $a класса MAIN
$CLASS - хранит ссылку на класс объекта. Это необходимо для доступа к статическим полям из динамических методов. Использование системного поля $CLASS удобно тем, что оно не зависит от имени класса, то есть не чувствительно к переименованию самого класса. Без использования $CLASS всю работу по переименованиям доступа к статическим полям класса придется выполнять вручную.
Пример:
#инициализация статического поля
@auto[]
$I_am_static[test]
@static_method[]
#получение значения статической переменной
$I_am_static
@dynamic_method[]
#получение значения статического поля класса
$CLASS.I_am_static
... Или я тупой, или тут это нету