Добавить метот в определенный класс

Тема в разделе "PHP", создана пользователем Mapkyc, 11 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Mapkyc

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    106
    Симпатии:
    47
    Прошу не пинать сильно =)

    Существует ли какой-нибудь прием добавить метод в уже определенный класс?

    к примеру в одном файле у меня определен класс, а в другом возможный к нему плагин, который добавляет метод..
     
  2. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Бррр.. А зачем?
     
  3. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Ты только что изобрел "Наследование":thenks: Только, к сожалению, не первый :smmne:
     
  4. McLay

    McLay Постоялец

    Регистр.:
    20 май 2008
    Сообщения:
    70
    Симпатии:
    15
    а я думал наследование в php уже есть)
     
  5. Mapkyc

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    106
    Симпатии:
    47
    ну да, про наследование я в курсе.. но разве может класс наследовать сам себя?

    вот наследование
    PHP:
    class Parent {
    ....
    }

    class 
    Child extends Parent {
    ...
    }
    а мне хотелось что-то типа
    PHP:
    class Parent {
    ....
    }

    class 
    Parent extends Parent {
    ...
    }

    может типо как перегрузка функции в сях есть перегрузка класса какая-нибудь в php ?

    просто пишу дополнение к оному быдлокоду, хочу обойтись без изменения оригинальных файлов
     
  6. McLay

    McLay Постоялец

    Регистр.:
    20 май 2008
    Сообщения:
    70
    Симпатии:
    15
    не может. Стандартными способами метод в существующем классе в php не переопределить. Можно, коненчо, извратиться, и придумать что-нибудь, с использованием __call или самодельных хуков.

    Еще, кстати, есть расширение для пхп, которое умеет такое делать, но оно не очень распространено:

    Перейти по ссылке
     
  7. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Это действительно имеет малую смысловую нагрузку. Если нужно расширить функционал класса - создай потомка. Не хочешь по каким-либо причинам - лезь в код класса. По моему так :)

    А тут "Яков родил Якова" получается :)
     
  8. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    Если только немного поправить исходный класс то можешь так
    PHP:
    class Parent {
     function 
    newMethod(){}
    }
    class 
    OLDCLASS extends Parent {
    ...
    }
    а вообще что это за разработка, которая не позволяет менять старые файлы?
     
  9. ShoxMaster

    ShoxMaster

    Регистр.:
    3 дек 2008
    Сообщения:
    393
    Симпатии:
    150
    http://www.toosweettobesour.com/2008/05/01/partial-classes-in-php/
    На .NET такое называется partial class. Можно обьявить его с этим ключевым словом и добавлять/перегружать методы. В статье он показал как это можно эмульнуть на PHP.
     
Статус темы:
Закрыта.