
Оператор -> в PHP используется для доступа к членам объекта: методам и свойствам. Он применяется в объектно-ориентированном программировании, когда нужно обратиться к конкретному элементу экземпляра класса. Без этого оператора невозможно вызвать метод объекта или получить доступ к его свойству.
Семантика оператора проста: слева – переменная, содержащая объект, справа – имя свойства или метода. Например, $user->name возвращает значение свойства name объекта $user, а $user->login() вызывает метод login того же объекта. Попытка использовать оператор -> на переменной, не являющейся объектом, приведёт к фатальной ошибке.
Важно учитывать, что доступ возможен только к публичным членам класса. Если свойство или метод помечены как private или protected, прямое обращение через -> приведёт к ошибке доступа. В таких случаях необходимо использовать публичные методы (геттеры и сеттеры), определённые в интерфейсе класса.
Также оператор -> поддерживает цепочки вызовов, что удобно при использовании fluent-интерфейсов. Например, $query->select(‘id’)->where(‘status’, ‘active’)->execute() – это последовательность вызовов методов, возвращающих объект, к которому применяется следующий вызов.
Обращение к свойствам объекта с помощью «->»

Оператор -> в PHP позволяет обращаться к свойствам и методам объектов, включая вложенные структуры. При наличии объектов внутри других объектов, доступ к ним осуществляется по цепочке, например: $user->profile->address->city.
Каждое звено цепи должно возвращать объект, иначе произойдёт ошибка уровня Fatal error. Поэтому важно убедиться, что все промежуточные значения инициализированы. Пример:
class Address {
public $city = 'Москва';
}
class Profile {
public $address;
public function __construct() {
$this->address = new Address();
}
}
class User {
public $profile;
public function __construct() {
$this->profile = new Profile();
}
}
$user = new User();
echo $user->profile->address->city; // Выведет: Москва
Цепочка вызовов (method chaining) – это подход, при котором метод возвращает $this, позволяя вызывать следующий метод без прерывания цепи. Это особенно полезно в конфигурациях, строительных шаблонах и ORM:
class QueryBuilder {
private $query = '';
public function select($columns) {
$this->query .= "SELECT $columns ";
return $this;
}
public function from($table) {
$this->query .= "FROM $table ";
return $this;
}
public function where($condition) {
$this->query .= "WHERE $condition";
return $this;
}
public function getQuery() {
return $this->query;
}
}
$sql = (new QueryBuilder())
->select('*')
->from('users')
->where('id = 1')
->getQuery();
// SELECT * FROM users WHERE id = 1
Чтобы реализовать цепочку, каждый метод, кроме последнего, должен возвращать текущий экземпляр объекта. Возврат $this обязателен, иначе цепь обрывается. Использование цепочек улучшает читаемость и снижает количество промежуточных переменных.
Ошибки при использовании оператора «->» и их причины
