Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нестандартный вызов метода объекта 
:(
    Опции темы
ShamanVoodoo
  Дата 15.5.2012, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 17.10.2007
Где: Сергиев Посад

Репутация: -1
Всего: -3



Код

    public function ajax( $function_name, $var_data = array() ) {
        
        $function_name = strip_tags($function_name);
        
        if( method_exists($this, 'ajax_'.$function_name) ) {
            $result = $this-> ???
        };
        
        return $result;
    } 

В моем абстрактном классе будет вот такая функция-гейт для аякс запросов, у потомков будет набор своих функций, содержащих в названии "ajax_", например private function ajax_search($var_data); соответственно мне нужно вызывать в функции ajax эти функции и получать результат их  работы.

Как это реализовать? 
PM MAIL ICQ   Вверх
Aliance
Дата 15.5.2012, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Например так:
Код

    public function ajax($function_name, $var_data = array())
    {
        $class = new ReflectionClass(__CLASS__);

        $method = 'ajax_'.strtolower($function_name);

        return $class->hasMethod($method) ? $this->$method($var_data) : NULL;
    }


Это сообщение отредактировал(а) Aliance - 15.5.2012, 11:26
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 15.5.2012, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

    public function ajax( $function_name, $var_data = array() ) {
        
        $function_name = 'ajax_'.strip_tags($function_name);
        
        if( method_exists($this, $function_name) ) {
            $result = $this->{$function_name}();
        };
        
        return $result;
    }


А что вернет если метода то нету?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Aliance
Дата 15.5.2012, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Кстати вариантов масса, можно еще через invoke и возможно через call_user_func (в последнем не уверен, сам всегда использую reflection):
Код

$class->getMethod($method)->invoke($this, $var_data);

PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.