[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обращение к функции через переменную класса
Glorious
Есть функция, которая проверяет, авторизован пользователь, или нет.


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" - вызывается при попытке использовать объект в качестве функции.

Спустя 4 часа, 51 минута, 8 секунд (19.11.2011 - 13:45) caballero написал(а):
если тебе мешают круглые скобки то магический метод __call()

Спустя 1 день, 18 часов, 22 минуты, 18 секунд (21.11.2011 - 08:07) linker написал(а):
Можно
class user 
{
public function __get($name)
{
if ($name == 'registered')
return $this->registered();
}

protected function registered()
{
return isset($_SESSION['default']) ? true : false;
}
}


echo (int)$user->registered;
__call() не избавляет от скобок, он отрабатывает, когда вызывается несуществующий метод. __invoke() работает, когда объект вызывается как функция.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.