📚
#9 16.09.2025 PHP Basics

Расскажите об использовании символа $ (знак доллара) в PHP.

Знак $ в PHP — обязательный префикс для имен переменных. Используется для:

  • Объявления и использования переменных ($var).
  • Создания “переменных переменных” ($$name).
  • Интерполяции в строках ("Hello, $name").
  • Доступа к свойствам объекта ($obj->prop).

Не используется для имен констант, классов или ключевых слов. Основа синтаксиса PHP.

Подробнее
⚠️
Внимание! Этот текст был сгенерирован AI-ассистентом. Информация может содержать неточности и требует проверки.

Полный ответ:

1. Основное назначение: Префикс переменной

Главная и обязательная роль $ — объявление и использование переменных.

  • Любая переменная в PHP начинается с символа $.
  • После $ должно следовать имя переменной, которое должно начинаться с буквы или символа подчеркивания.
  • Это позволяет легко отличить переменные от языковых конструкций, ключевых слов и имен функций.
$variable = 'value'; // Объявление переменной
echo $variable;      // Использование переменной

$123 = 'invalid'; // Ошибка: имя не может начинаться с цифры
$_123 = 'valid';  // Корректно: начинается с подчеркивания

2. Переменные переменных (Variable Variables)

Это нестандартный, но мощный механизм, при котором имя переменной может динамически определяться значением другой переменной.

$foo = 'bar';
$$foo = 'baz'; // Создается переменная с именем $bar, т.к. $foo = 'bar'

echo $bar; // Выведет 'baz'
echo $$foo; // Также выведет 'baz' ($foo преобразуется в 'bar', и получается $bar)

Это можно продолжать:

$name = 'foo';
$$$name = 'hello'; // Равносильно $$($name) -> $('foo') -> $foo = 'hello'

3. Использование внутри строк

Поведение $ внутри строк зависит от типа строки.

  • В двойных кавычках (") и heredoc: Интерпретатор ищет $ и пытается подставить значение переменной (интерполяция строк).
    $name = 'World';
    echo "Hello, $name!"; // Выведет: Hello, World!
    echo "Hello, {$name}!"; // Более явный и предпочтительный вариант
    
  • В одинарных кавычках (') и nowdoc: $ трактуется как обычный символ, интерполяции не происходит.
    $name = 'World';
    echo 'Hello, $name!'; // Выведет: Hello, $name!
    

4. Взаимодействие с объектами и классами

  • Обращение к свойствам объекта: Используется комбинация $ и ->.
    $object = new stdClass();
    $object->property = 'value'; // $ для имени переменной-объекта, -> для доступа к свойству
    echo $object->property;
    
  • Доступ к статическим свойствам: Используется комбинация $ и ::, но знак доллара относится к имени переменной, а не к свойству.
    class MyClass {
        public static $staticProperty = 'static value';
    }
    
    // Доступ через класс:
    echo MyClass::$staticProperty;
    
    // Доступ через переменную, содержащую имя класса:
    $className = 'MyClass';
    echo $className::$staticProperty;
    

5. В функциях и замыканиях

  • Для передачи переменных по ссылке: В объявлении функции & ставится перед аргументом, а при вызове & ставится перед переменной (которая уже имеет свой $).
    function addOne(&$value) { // & здесь - оператор ссылки
        $value++;
    }
    $myNumber = 5;
    addOne($myNumber); // Передаем саму переменную, а не её копию
    echo $myNumber; // 6
    
  • Использование переменных из глобальной области видимости: Через ключевое слово global или $GLOBALS[].
    $globalVar = 10;
    function test() {
        global $globalVar; // Теперь $globalVar внутри функции - это внешняя переменная
        echo $GLOBALS['globalVar']; // Альтернативный способ через суперглобальный массив
    }
    
  • Замыкания (closures) и use: Для передачи внешних переменных в анонимную функцию.
    $message = 'Hello';
    $myFunction = function() use ($message) { // Передаем переменную $message в замыкание
        echo $message;
    };
    

6. Что НЕ требует знака доллара

Важно помнить, что $ не используется для:

  • Констант (определенных через define() или const):
    define('SITE_NAME', 'My Site');
    echo SITE_NAME; // Без $
    
  • Имен классов при их создании, использовании в статических вызовах или в instanceof:
    class MyClass {}
    $obj = new MyClass(); // MyClass - без $
    if ($obj instanceof MyClass) {...} // Тут тоже без $
    
  • Ключевых слов языка (if, for, function, echo и т.д.).

Итог:

Знак $ в PHP — это обязательный префикс для всех переменных. Его основные функции:

  1. Объявление и использование простых переменных.
  2. Создание переменных переменных — мощная, но опасная возможность.
  3. Интерполяция внутри строк в двойных кавычках.
  4. Работа с объектами и статическими свойствами в комбинации с -> и ::.
  5. Передача по ссылке и захват в замыкания.

Понимание $ критически важно, так как это основа синтаксиса языка, отличающая его от многих других.