Как добавить метод в объект из самого объекта?

c58

Новичок
Как добавить метод в объект из самого объекта?

Другими словами, нужно расширить объект из самого себя.
Нашёл только вот это: Magical PHP: __call() , но несовсем то.
 

c58

Новичок
Есть объект:
PHP:
class test {
     function __call(){
         //...
     }
}
Есть файл, допустим test2.php:
PHP:
function test2($str){
      echo $str;
}
Далее...
PHP:
$test = new test; //создаю объект test
$test->test2('Hello World!'); // вызываю несуществующий метод. Вместо него вызывается метод __call. 
                                             // В нём я инклюдю файлик с названием несуществующего метода(тоесть test2.php), 
                                             // [COLOR=darkred][b]регистрирую каким-то образом[/b][/COLOR] метод test2 в объекте test и выполняю этот метод,
                                             // возвращая результат//

$test->test2('Hello World! 2'); // теперь метод test2 является частью объекта test, и будет вызван без участия __call //
Надеюсь понятно.
 

c58

Новичок
Отнють.
Из метода мне нужно получить доступ к другим несуществующим методам и свойствам этого объекта :)
 

Gas

может по одной?
c58
лично мне кажется, что тебе хочется странного :) не дай бог потом поддерживать этот код.
Не совсем уловил смысл, но точно декоратор или стратегия не подходят ?
 

dimagolov

Новичок
сегодня как сговорились... одному надо динамически свойства придумывть и с наружи их доставать, другому методы тоже подключать неведомо откуда и зачем...

c58, это не ради множественного наследования случайно?
 

Sluggard

Новичок
dimagolov
Это плагинная система. Все методы объекта являются плагинами. Шагать надо в ногу со временем. ;)
 

StUV

Rotaredom
Из метода мне нужно получить доступ к другим несуществующим методам
полный бред
удачи в дебаге =))))))))

-~{}~ 15.04.08 22:40:

Это плагинная система. Все методы объекта являются плагинами.
плагины легко регистрируются множеством других менее извращенных способов ;)
 

Stierus

Новичок
не легче уж тогда пользоваться не функциями, а классами для плагинов ? При обращении к плагину система проверяет, зарегистрирован ли экземпляр класса требуемого плагина, если нет - вызывет __set и регистрирует, после чего вызывает нужную функцию уже зарегистрированного экземпляра, которая успешно выполняется. Так даже лучше (у разных плагинов функции могут называться одинаково). Ну и работать это будет всё время через __set __get
 

c58

Новичок
Всё, всем спасибо, особенно Stierus, сделаю почти как вы сказали.
 
Сверху