Задать вопрос
@Xveeder

Как обратиться к членам класса через конструктор (new Class()->method())?

Доброго времени суток, господа. Кажется, где-то на тостере видел примерно такой код:

auth(new Cookies()->getCookie());

Разумеется, подобная конструкция не работает, хотя, например, подобный вызов можно сделать если вызвать функцию, которая возвращает объект.

И да, такой вариант - не вариант:
auth((new Cookies())->getCookie());

Быть может есть какой-то магический метод?
Спасибо.
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
DevMan
@DevMan
задача бессмысленная.
и не нужно никакой магии, достаточно статических методов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
VladimirAndreev
@VladimirAndreev
php web dev
Если не путаю, то (new Example())->getWathever()
Создаёт экземпляр Example и вызывает его getWathever()
А New Example()->getWathever() пытается вызвать функцию Example, в её результате вызвать метод getWathever и уже из его возврата создать инстанс класса
Ответ написан
glaphire
@glaphire Куратор тега PHP
PHP developer
Это работает только в том случае, если ((new Cookies())->getCookie()) возвращает ровно то, что принимает auth() в качестве аргумента. Такое избегание вызовов статических методов через мгновенное создание экземпляра и вызова метода часто связано с будущими юнит тестами (там статика не приветствуется).
Ответ написан
Комментировать
IgorPI
@IgorPI
Согласно ТС.
Class User {
public function __construct(){
return $this;
}

public function myMethod (){

return $this;

}
}


По существу.
Есть Паттерн singleton.
Только там нужно создать статический метод и приватноне статическое свойство.

Метод должен при необходимости создавать объект в приватное свойство и возвращать его.

Так же объявить приватный конструктор.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы