class user {
function registered() {
return isset($_SESSION['default']) ? true : false;
}
}
Вызывается функция так — $user->registered()
Вопрос: можно как-то переделать функцию, чтобы ее можно было вызывать через переменную?
т.е. так — $user->registered
Спустя 1 час, 49 минут, 38 секунд (19.11.2011 - 05:46) bulgakov написал(а):
Функция это функция, и вызывать ее нужно только так, переменная не возвращает значение она его хранит. В питоне по моему функцию можно передавать и в переменную и в качестве аргументов другой функции и как угодно, но в php по моему такое не прокатывает.
Спустя 3 часа, 7 минут, 46 секунд (19.11.2011 - 08:54) Xes написал(а):
Вот это по-моему, ближайшее, чем могу помочь.
"__invoke" - вызывается при попытке использовать объект в качестве функции.
"__invoke" - вызывается при попытке использовать объект в качестве функции.
Спустя 4 часа, 51 минута, 8 секунд (19.11.2011 - 13:45) caballero написал(а):
если тебе мешают круглые скобки то магический метод __call()
Спустя 1 день, 18 часов, 22 минуты, 18 секунд (21.11.2011 - 08:07) linker написал(а):
Можно
class user__call() не избавляет от скобок, он отрабатывает, когда вызывается несуществующий метод. __invoke() работает, когда объект вызывается как функция.
{
public function __get($name)
{
if ($name == 'registered')
return $this->registered();
}
protected function registered()
{
return isset($_SESSION['default']) ? true : false;
}
}
echo (int)$user->registered;