ФорумПрограммированиеPHP для идиотов → Копирование метода

Копирование метода

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 января 2010 г. 6:49, спустя 11 минут 17 секунд

    ну просто занаследовал общаю базу для всех классов да и все. ты мог не делать так сложно насколько я понимаю, просто в прошлом примере с рефлексией все 3 унаследовать от 1го объекта :-D
    Спустя 11 сек.
    получилась бы та же карусель
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 января 2010 г. 6:55, спустя 6 минут 5 секунд

    нужно
    Forum
    Groups
    Groups_Forum (и группы и форум одновременно)

    я делаю:
    Forum extends MultipleInheritanceBase
    Groups extends MultipleInheritanceBase
    Groups_Forum extends MultipleInheritance (и в конструкторе $this->extend(new Forum); $this->extend(new Groups);)

    а как оно выглядело б по-твоему?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 января 2010 г. 7:14, спустя 18 минут 49 секунд

    еще раз перечитал код, я думал ты другое сделал, а ты просто "прокладку" сделал. теперь тебе ничто не запрещает вызвать приват, что тоже не есть хорошо :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 января 2010 г. 7:26, спустя 11 минут 57 секунд

    да нивапрос, ReflectionMethod::isPrivate в помощь и будем проверять видимость. В методе MultipleInheritance::__call. Это же набросок только.

    Еще раз: ты в своем прошлом сообщении говорил, что можно что-то там унаследовать от чего-то, и не городить этого всего. Как это сделать?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 января 2010 г. 7:35, спустя 9 минут 21 секунду

    как я думал не дает и в принципе не должен
    Спустя 35 сек.

    да нивапрос, ReflectionMethod::isPrivate в помощь и будем проверять видимость. В методе MultipleInheritance::__call. Это же набросок только.

    Еще раз: ты в своем прошлом сообщении говорил, что можно что-то там унаследовать от чего-то, и не городить этого всего. Как это сделать?
    я ступил :)

    оно бы сработало через this но не через посторонний вызов
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 января 2010 г. 7:52, спустя 17 минут 29 секунд

    заинтересовал ты меня. в общем моя идея была права отчасти.

    <?php
    abstract class Base {
    abstract protected function _test();
    }

    class Bar extends Base {

    protected function _test() { }

    public function TestFoo() {
    $c = new Foo();
    $c->_test();
    }
    }

    class Foo extends Base {
    protected function _test() {
    echo 'Foo';
    }
    }

    $bar = new Bar();
    $bar->TestFoo(); // result: Foo
    ?>


    подобная реализация, то есть мы абстрактные методы резервируем и потом можем без лишней ебли среди кучи объектов, наследованных от одного вызывать их другу у друга
    Спустя 151 сек.
    ну тебе видимо динамика нужна, так что да, твой метод рабочий, хоть и через жопу)

    зы: просто мне не нравится этот метод и идея, и пить и курить не люблю, а так же не люблю медленный интернет, большие сиськи, медленные компьютеры, маленькие мониторы, больной живот или голову, секс больше 6 раз подряд, секс на пьяную голову, холодную еду, мало денег, много проблем и многое многое другое :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 января 2010 г. 8:49, спустя 57 минут 2 секунды

    ну в моем случае это не было бы логично:

    Forum extends Groups
    Groups_Forum extends Groups

    так что тут либо 1)выносить часть функционала на уровень выше и в класс Groups_Forum передавать экземпляр Groups или форум 2) доделывать множественное наследование и работать через него.
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 11 января 2010 г. 11:16, спустя 2 часа 26 минут 37 секунд

    не звучит, форум наследуют группы.
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 11 января 2010 г. 11:46, спустя 29 минут 57 секунд

    действительно, группы както сильно из другой оперы. но вот "галерея наследует форум" + "галерея наследует голосовалку" было бы логично.
    ιιlllιlllι унц-унц
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 января 2010 г. 12:03, спустя 17 минут 19 секунд

    голосовалка может идти как драйвер)
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 11 января 2010 г. 12:14, спустя 10 минут 45 секунд


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

    да, да я вот о том, же
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 16 января 2010 г. 9:26, спустя 4 дня 21 час 11 минут

    херня. Родитель не может вызвать метод, переписанный в ребенке. Вызывает свой.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 16 января 2010 г. 9:32, спустя 6 минут 35 секунд

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 16 января 2010 г. 10:42, спустя 1 час 9 минут 58 секунд

    пхп - бред.

    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 16 января 2010 г. 12:04, спустя 1 час 22 минуты 22 секунды

    +1. Пых заебал. Сделал дополнительный класс, который паблик, и к которому обращаюсь:

    class Module_Groups_Forum_External
    {
    protected $groupId;

    public function __construct()
    {
    $this->groupId = isset($_GET['groupId']) ? $_GET['groupId'] : NULL;
    }

    public function getToken()
    {
    return 'groups/' . $this->groupId;
    }

    public function getUrlPrefix()
    {
    return 'groups/' . $this->groupId . '/forum/';
    }

    public function getGroupId()
    {
    return $this->groupId;
    }
    }


    Создание-редактирование сообщений в группе:

    class Module_Groups_Forum_MessageManager extends Module_Forum_MessageManager
    {
    protected $external = 'Module_Groups_Forum_External';

    public function __construct()
    {
    parent::__construct();
    }
    }

    как видно, отличается только значением одной переменной, от создания-редактирования сообщений на всем форуме. В общем-то еще рефакторить и рефакторить. Мне бы почитать каких-то умников типа Фаулера… Но нет времени, нужно делать другой функционал.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!