[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Изменение классов, которые исп. другие классы
WinterSilence
Извиняюсь за кривую формулировку, но как это более понятно назвать не придумал ((

Поясню на примере:

В начале aвтозагрузчик ищет файл в папке приложения - application, потом в модулях - modules/a, modules/b, и наконец в ядре - core.

Допустим есть класс core/Foo который используется в классах core/Bar, application/Moo, чтобы переопределить его в приложении или модулях используются классы "пустышки":

// core/Base/Foo.php:
abstract class Base_Foo
{
public function blabla()
{
echo 'core!';
}
}

// core/Foo.php:
class Foo extends Base_Foo
{
// Пустышка (
}
// application/Foo.php:
class Foo extends Base_Foo
{
public function blabla()
{
echo 'application!';
}
}


В этом случае вместо core/Foo.php загружается измененный application/Foo.php и т.к. имя класса не меняется, то не нужно изменять и core/Bar, application/Moo.

Вопрос: можно ли сделать что-то подобное без лишних классов - пустышек?
T1grOK
Цитата (WinterSilence @ 17.05.2014 - 11:04)
Вопрос: можно ли сделать что-то подобное без лишних классов - пустышек?

Это не лишние классы, ведь весь смак и смысл в том чтоб не затрагивая кода ядра иметь возможность расширить его без ущерба для системы.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
WinterSilence
Цитата (T1grOK @ 17.05.2014 - 15:31)
Цитата (WinterSilence @ 17.05.2014 - 11:04)
Вопрос: можно ли сделать что-то подобное без лишних классов - пустышек?

Это не лишние классы, ведь весь смак и смысл в том чтоб не затрагивая кода ядра иметь возможность расширить его без ущерба для системы.

Великое умение написать много слов и ничего по существу.

В итоге решил для расширения классов использовать трейты.
T1grOK
Цитата (WinterSilence @ 20.05.2014 - 18:52)
В итоге решил для расширения классов использовать трейты.

Костыль еще тот...

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Michael
неверно вы проектируете.
Нужно использовать неймспейсы, зависимость делать от интерфейсов, а не разные версии одного и того же по разным папкам пихать.
Вот подробнее про все эти "DI" штуки:
http://habrahabr.ru/post/183658/

_____________
There never was a struggle in the soul of a good man that was not hard
WinterSilence
@Michael namespace здесь не поможет, если уверены что ваш вариант возможен, то переделайте пожалуйста мой пример в первом посте чтобы было понятнее

P.S. про трейты я погорячился, class_alias() тоже не годится(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.