parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Умненький ты наш...

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


... Или я тупой, или тут это нету