Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Обращение к функциям класса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Нужно віполнить предварительную проверку при попытке обращения к функции класса
webpauk
Отправлено: 07 Февраля, 2014 - 13:11:18
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




мои классы наследуют базовый класс. в каждом классе есть с десяток функций.
как прописать в конструкторе, что при обращении к функции класса сделать что-то
 
 Top
eai
Отправлено: 07 Февраля, 2014 - 13:44:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




webpauk пишет:
мои классы наследуют базовый класс. в каждом классе есть с десяток функций.
как прописать в конструкторе, что при обращении к функции класса сделать что-то


Все методы делаем в паренте приватными, вызов вне класса через __call делаем, а в наследнике перегружаем __call

(Отредактировано автором: 07 Февраля, 2014 - 13:44:52)

 
 Top
Invert
Отправлено: 07 Февраля, 2014 - 15:49:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010  


Помог: 5 раз(а)




webpauk пишет:
как прописать в конструкторе, что при обращении к функции класса сделать что-то

Конкретно в конструкторе никак нельзя. И фу-ции класса называются методами.

Можно сделать как написал eai, или сделать геттер getMethod( $name ), который сперва будет делать что-то, а потом передавать управление нужному методу.
 
 Top
eai
Отправлено: 07 Февраля, 2014 - 15:58:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




Invert пишет:
webpauk пишет:
как прописать в конструкторе, что при обращении к функции класса сделать что-то

Конкретно в конструкторе никак нельзя. И фу-ции класса называются методами.

Можно сделать как написал eai, или сделать геттер getMethod( $name ), который сперва будет делать что-то, а потом передавать управление нужному методу.

С геттером не прокатит если метод имеет более чем один аргумент
 
 Top
Invert
Отправлено: 07 Февраля, 2014 - 16:04:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010  


Помог: 5 раз(а)




Прокатит, если использовать call_user_func_array().
Но вопрос не в этом...
 
 Top
teddy
Отправлено: 07 Февраля, 2014 - 16:31:56
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Цитата:
Нужно віполнить предварительную проверку при попытке обращения к функции класса

Легко
PHP:
скопировать код в буфер обмена
  1. class Test{
  2.     public function myMethod($name, $age){
  3.         echo 'Привет, '.$name.'. Тебе '.$age.' лет';
  4.     }
  5. }
  6.  
  7. $rc = new ReflectionClass('Test');
  8. if($rc->hasMethod('myMethod')){
  9.     //делайте что угодно, метод myMethod есть у класса Test
  10.     $method = $rc->getMethod('myMethod');//получили экземпляр класса ReflectionMethod
  11.     $method->invoke($rc->newInstance(), 'Mike', 25);//выполнили этот метод
  12. }else{
  13.     //нет такого метода
  14. }

(Отредактировано автором: 07 Февраля, 2014 - 16:39:13)

 
 Top
caballero
Отправлено: 07 Февраля, 2014 - 16:58:33
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




кто нибудь вообще читал о чем тема?

чел хочет что то типа аспектов, что, разумеется стандартным образом нереализуемо
да и сама задача практичекого смысла не имеет


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
eai
Отправлено: 07 Февраля, 2014 - 17:10:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




caballero пишет:
кто нибудь вообще читал о чем тема?

чел хочет что то типа аспектов, что, разумеется стандартным образом нереализуемо
да и сама задача практичекого смысла не имеет



Дрогой мы посольство не понимаем, а правительство на другой планете живет
 
 Top
Invert
Отправлено: 07 Февраля, 2014 - 17:37:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010  


Помог: 5 раз(а)




caballero пишет:
кто нибудь вообще читал о чем тема?

Нет конечно, мы сразу ответы пишем. И ответ ТСу был дан.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB