мои классы наследуют базовый класс. в каждом классе есть с десяток функций.
как прописать в конструкторе, что при обращении к функции класса сделать что-то
1. webpauk - 07 Февраля, 2014 - 13:11:18 - перейти к сообщению
2. eai - 07 Февраля, 2014 - 13:44:08 - перейти к сообщению
webpauk пишет:
мои классы наследуют базовый класс. в каждом классе есть с десяток функций.
как прописать в конструкторе, что при обращении к функции класса сделать что-то
как прописать в конструкторе, что при обращении к функции класса сделать что-то
Все методы делаем в паренте приватными, вызов вне класса через __call делаем, а в наследнике перегружаем __call
3. Invert - 07 Февраля, 2014 - 15:49:24 - перейти к сообщению
webpauk пишет:
как прописать в конструкторе, что при обращении к функции класса сделать что-то
Конкретно в конструкторе никак нельзя. И фу-ции класса называются методами.
Можно сделать как написал eai, или сделать геттер getMethod( $name ), который сперва будет делать что-то, а потом передавать управление нужному методу.
4. eai - 07 Февраля, 2014 - 15:58:51 - перейти к сообщению
Invert пишет:
Конкретно в конструкторе никак нельзя. И фу-ции класса называются методами.
Можно сделать как написал eai, или сделать геттер getMethod( $name ), который сперва будет делать что-то, а потом передавать управление нужному методу.
webpauk пишет:
как прописать в конструкторе, что при обращении к функции класса сделать что-то
Конкретно в конструкторе никак нельзя. И фу-ции класса называются методами.
Можно сделать как написал eai, или сделать геттер getMethod( $name ), который сперва будет делать что-то, а потом передавать управление нужному методу.
С геттером не прокатит если метод имеет более чем один аргумент
5. Invert - 07 Февраля, 2014 - 16:04:08 - перейти к сообщению
Прокатит, если использовать call_user_func_array().
Но вопрос не в этом...
Но вопрос не в этом...
6. teddy - 07 Февраля, 2014 - 16:31:56 - перейти к сообщению
Цитата:
Нужно віполнить предварительную проверку при попытке обращения к функции класса
Легко
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- class Test{
- public function myMethod($name, $age){
- echo 'Привет, '.$name.'. Тебе '.$age.' лет';
- }
- }
- $rc = new ReflectionClass('Test');
- if($rc->hasMethod('myMethod')){
- //делайте что угодно, метод myMethod есть у класса Test
- $method = $rc->getMethod('myMethod');//получили экземпляр класса ReflectionMethod
- $method->invoke($rc->newInstance(), 'Mike', 25);//выполнили этот метод
- }else{
- //нет такого метода
- }