Я часто вижу такой код:Confused - объекты, требующие методы вызова методов
X::y()->z();
Является ли это статический объект вызова метода у, результат у возвращающую объект, и этот объект, то вызов метода называется г?
спасибо.
Я часто вижу такой код:Confused - объекты, требующие методы вызова методов
X::y()->z();
Является ли это статический объект вызова метода у, результат у возвращающую объект, и этот объект, то вызов метода называется г?
спасибо.
Статический объект не вызывает y
, но метод y
вызывается классом, статически. Кроме того, вы правы.
, что не на 100% правильное. Нет никаких доказательств того, что * X * является статическим. Вы можете только сказать, что * y * статично. –
Правильно! X не будет статическим – Evert
Это может выглядеть следующим образом:
class X {
public static function y(){
return new self();
}
public function z(){
}
}
* y() * может что-то вернуть –
@ Lame-up-duck Спасибо, я не знал об этом. Это был самый короткий пример. – vikingmaster
Прошу прощения, если мой комментарий казался cpt. Очевидное цитирование :). Я думаю, что ваш ответ правильный, но не для этого вопроса. –
Вы вызываете статический метод у() на объекте X, а затем вы звоните г() метод на результирующем объекта, возвращаемого от y()
Это может быть или не быть вызов статического метода. Если вызов выполняется внутри экземпляра класса, а X
является родительским элементом этого класса, то этот вызов может быть нестационарным.
Одно можно сказать точно: X::y()
возвращает объект.
правильный. Или у вас есть какая-то контр-идея? –
Довольно «да», если вы замените статический объект статическим классом –
или вместо «статического объекта, вызывающего метод y», скажем «вызовите статический метод y класса X» –