В РНР нет такого понятия, как указатель, но все же можно создавать ссылки на другие переменные. Существуют три разновидности ссылок: жесткие, символические и ссылки на объекты (первые часто называют просто ссылками).
Жесткая ссылка представляет собой просто переменную, которая является синонимом другой переменной. Чтобы создать жесткую ссылку, нужно использовать оператор =&. Например:
$а = 10;
$b =&$а; // теперь $b — то же самое, что и $а
$b = 0; //на самом деле $а=0
echo "b=$b, a=$a"; // выводит "Ь=0, а=0"
Символическая ссылка — это всего лишь строковая переменная, хранящая имя другой переменной. Чтобы добраться до значения переменной, на которую указывает символическая ссылка, необходимо применить оператор разыменования — дополнительный знак $ перед именем ссылки.
$right = "красная";
$wrong = "синяя";
$color = "right";
echo $$color; // выводит значение переменной $right ("красная")
$$color = "несиняя"; // присваивает переменной $right новое значение
Ссылки на объекты( появившееся в РНР версии 5) - переменная хранит не сам объект, а лишь ссылку на него. Так как переменные содержат лишь ссылки на объекты, при их присваивании копируются только эти ссылки, но не сами объекты.
Константа отличается от переменной тем, что, во-первых, ей нигде в программе нельзя присвоить значение больше одного раза, а во-вторых, ее имя не предваряется знаком $, как это делается для переменных. Константы бывают двух типов: одни — предопределенные (т. е. устанавливаемые самим интерпретатором), а другие определяются программистом.
Существует несколько предопределенных констант.
_FILE_ // Хранит имя файла, в котором расположен запущенный в настоящий момент код.
_LINE_ //Содержит текущий номер строки, которую обрабатывает в текущий момент интерпретатор.
PHP_VERSION //Версия интерпретатора PHP.
PHP_OS //Имя операционной системы, под управлением которой работает РНР.
TRUE ИЛИ true
FALSE ИЛИ false
NULL ИЛИ null
Вы можете определить и свои собственные, новые константы. Делается это при помощи оператора define (), очень похожего на функцию.
void define (string $name, string $value, bool $case__sen) //Определяет новую константу с именем, переданным в $name, и значением $value.
Если необязательный параметр $case_sen равен true, то в дальнейшем в программе регистр букв константы учитывается, в противном случае — не учитывается (по умолчанию, регистр учитывается). Созданная константа не может быть уничтожена или переопределена.
$а = 2.34 * sin(3 * PI / 8) +5; // использование константы
echo "Это число ".PI; // выведет "Это число 3.1416..."
Обратите внимание на кавычки, которыми должно быть обрамлено имя константы при ее определении. А также на то, что нельзя дважды определять константу с одним и тем же именем — это породит ошибку во время выполнения программы.
В РНР существует также функция, которая проверяет, существует ли (была ли определена ранее) константа с указанным именем.
bool defined(string $name) //Возвращает true, если константа с именем $name была ранее определена.
Задание.
1. Определить 2 константы. Определить 2 переменные. Присвоить одной переменной число, а второй число, но в виде строки, т.е. заключенное в кавычки.
2. Привести строку к числу. Вывести результат преобразования.
3. Изменить значение одной из констант. Вывести результат.
4. Создать еще одну переменную, и присвоить ей значение ссылки на первую переменную. Увеличить первую переменную на произвольное число. Вывести все три переменные и посмотреть результат.
5. Удалить первую константу. Проверить, существует ли константа с именем первой константы.