Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Добавление новых методов в класс динамически

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Добавление новых методов в класс динамически
Имя
Сообщение << Старые топики   Новые топики >>
Добавление новых методов в класс динамически - 2010-01-29 13:15:12.510000   
codeismy.name

Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
Собстно вопрос следующий:
есть класс A
у него есть метод B
как мне "на лету" добавить в класс метод С (если это вообще возможно)
или ещё как вариант можно ли сделать так.. .к инициированому объекту добавить новые методы из другого класса
как вариант можно сделать новый класс и для него унаследовать абсолютно всё остальные классы но это ж быдлокод будет… тем более не все методы из остальных классов могут быть нужными.

п.с. это нужно для динамической подгрузки модулей ядра.
Post #: 1
RE: Добавление новых методов в класс динамически - 2010-01-29 14:26:30.140000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Предположу, что речь идёт о C++.

Никак. Если речь не о лиспе или чём-нибудь подобном, то никак нельзя. Но не совсем понятно зачем это нужно. Вот смотри, абстрактный драйвер символьного устройства, интерфейс:class char_device { public: virtual int open (const char *name) = 0; virtual int close () = 0; virtual size_t write (void *buf, size_t size) = 0; virtual size_t read (void *buf, size_t size) = 0; }; Ну и? какую функцию в него добавлять? Допустим мы каким-то хитрым способом подгрузим модуль какого-нибудь символьного устройства, который при подгрузке добавит в свой список методов метод lseek. Допустим. Подгрузили. Имеемchar_device *dev;Как вызвать метод lseek объекта, на который указывает dev?

ps. Динамически добавить метод – это значит динамически изменить тип, так? А это уже попахивает динамической типизацией, которая C++'у и не снилась.
Post #: 2
RE: Добавление новых методов в класс динамически - 2010-01-29 15:09:34.210000   
horiz

Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
Судя по разделу, речь вряд ли идет о C++. Скорее PHP.
Динамически добавлять методы вроде нельзя. Хотя здесь есть тонкость: можно копнуть в сторону спецметода __call()

Ну а если несколько классов должны содержать совершенно одинаковые методы, так сделай абстрактный класс с этими методами и унаследуй от него свой классы.
Post #: 3
RE: Добавление новых методов в класс динамически - 2010-01-29 15:33:07.730000   
codeismy.name

Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
да, извините, не указал язык…
PHP

а де вообще про спецметоды почитать? и попробовать.. я просто пробовал у себя на серваке разные спецметоды вызывать и чёто не вышло совсем
Post #: 4
RE: Добавление новых методов в класс динамически - 2010-01-29 16:41:37.513333   
horiz

Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
quote:

а де вообще про спецметоды почитать?


В нете поищи, инфы тьма. Если в двух словах:
Метод __call() будет выполнен, если обратились к несуществующему методу.

function __call($method_name, $arg_array){ //твой код } При вызове несуществующего метода будет вызван метод __call() с аргументами $method_name - имя несуществующего метода, $arg_array - массив аргументов, которые ему передавали.

Про нерабочие спецметоды - это сильно пахнет PHP4.
Post #: 5
RE: Добавление новых методов в класс динамически - 2010-01-31 14:55:43.393333   
codeismy.name

Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
та я возможно не ту версию пыхпыха на серваке собрал… перепроверю :)
Post #: 6
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Добавление новых методов в класс динамически







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.