Форум → Программирование → PHP для идиотов → Копирование метода
Копирование метода
Страницы: ← Предыдущая страница • Следующая страница →
-
11 января 2010 г. 17:49, спустя 11 минут 17 секунд
ну просто занаследовал общаю базу для всех классов да и все. ты мог не делать так сложно насколько я понимаю, просто в прошлом примере с рефлексией все 3 унаследовать от 1го объекта :-DСпустя 11 сек.получилась бы та же карусельСапожник без сапог -
11 января 2010 г. 17: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);)
а как оно выглядело б по-твоему? -
11 января 2010 г. 18:14, спустя 18 минут 49 секунд
еще раз перечитал код, я думал ты другое сделал, а ты просто "прокладку" сделал. теперь тебе ничто не запрещает вызвать приват, что тоже не есть хорошо :)Сапожник без сапог -
11 января 2010 г. 18:26, спустя 11 минут 57 секунд
да нивапрос, ReflectionMethod::isPrivate в помощь и будем проверять видимость. В методе MultipleInheritance::__call. Это же набросок только.
Еще раз: ты в своем прошлом сообщении говорил, что можно что-то там унаследовать от чего-то, и не городить этого всего. Как это сделать? -
11 января 2010 г. 18:35, спустя 9 минут 21 секунду
как я думал не дает и в принципе не долженСпустя 35 сек.
я ступил :)
да нивапрос, ReflectionMethod::isPrivate в помощь и будем проверять видимость. В методе MultipleInheritance::__call. Это же набросок только.
Еще раз: ты в своем прошлом сообщении говорил, что можно что-то там унаследовать от чего-то, и не городить этого всего. Как это сделать?
оно бы сработало через this но не через посторонний вызовСапожник без сапог -
11 января 2010 г. 18: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 раз подряд, секс на пьяную голову, холодную еду, мало денег, много проблем и многое многое другое :)Сапожник без сапог -
11 января 2010 г. 19:49, спустя 57 минут 2 секунды
ну в моем случае это не было бы логично:
Forum extends Groups
Groups_Forum extends Groups
так что тут либо 1)выносить часть функционала на уровень выше и в класс Groups_Forum передавать экземпляр Groups или форум 2) доделывать множественное наследование и работать через него. -
-
11 января 2010 г. 22:46, спустя 29 минут 57 секунд
действительно, группы както сильно из другой оперы. но вот "галерея наследует форум" + "галерея наследует голосовалку" было бы логично.ιιlllιlllι унц-унц -
-
11 января 2010 г. 23:14, спустя 10 минут 45 секунд
действительно, группы както сильно из другой оперы. но вот "галерея наследует форум" + "галерея наследует голосовалку" было бы логично.
да, да я вот о том, же -
16 января 2010 г. 20:26, спустя 4 дня 21 час 11 минут
херня. Родитель не может вызвать метод, переписанный в ребенке. Вызывает свой. -
16 января 2010 г. 20:32, спустя 6 минут 35 секунд
вот еще вариантец
http://ua2.php.net/manual/en/language.oop5.overloading.php#88949 -
-
16 января 2010 г. 23: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();
}
}
как видно, отличается только значением одной переменной, от создания-редактирования сообщений на всем форуме. В общем-то еще рефакторить и рефакторить. Мне бы почитать каких-то умников типа Фаулера… Но нет времени, нужно делать другой функционал.
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!