Тема: Як влаштовано наслідування у ваших фреймворках?
Поки що маю грунтовний досвід використання лише KohanaFramework.
В ньому працює наступна система наслідування.
Системні класи:
<?php
class First {
// Певний код
}
class Second extends First {
// Цей клас повністю пустий
}
class Third extends Second {
// Певний код
}
class Fourth extends Third {
// Цей клас повністю пустий
}
class Fifth extends Fourth {
// Певний код
}
Тобто KohanaFramework абсолютно між кожним системним класом вставляє пустий клас, і наступні класи посилаються саме на пустий клас.
І потім, якщо в application нам потрібно розширити, наприклад, class First, то достатньо розширити повністю пустий клас Second. І цей клас буде впливати на все дерево класів, бо жоден системний клас не посилається на клас First. Всі класи, яким потрібен код класа First, посилаються на клас Second.
При такій схемі можна перевизначити майже будь-який системний клас фреймворка. Мінус в цій схемі: навіть якщо жоден системний клас в application не перевизначається, витрачаються додаткові ресурси на відкриття пустих класів. Тобто якщо в робочому потоці, по-суті, бере участь 20 класів, то разом з пустими класами, кількість відкритих файлів буде дорівнювати 20*2 = 40.
А тепер мені цікаво почути яка схема наслідувань в інших відомих вам фреймворках. Чи існує в них можливість так само легко перевизначати "class Second", без подальшого переписування схеми наслідувань системних класів?