Я работаю над довольно простой инфраструктурой OO PHP (не очень важно в этом случае, я думаю..) со следующей базовой структурой:
application/
classes/
controllers/
includes/
models/
views/
classes/
includes/
Я знаю, что использование интерфейсов, а не классов жесткого кодирования - хорошая практика для ООП, но я не уверен, что лучше всего подходит, когда речь заходит о фактическом местонахождении/структуре интерфейсных каталогов и файлов.
Если интерфейсы разделены на несколько файлов в каталоге:
interfaces/
iDatabase.php
iRouter.php
или все они должны быть помещены в один файл, так как они не такие большие:
includes/
interfaces.php (with all Interfaces inside)
С первым вариантом я мог бы использовать автозагрузчик для загрузки интерфейсов и не загружать каждый файл, когда не все могут быть использованы, в то время как второй вариант все они будут загружены изначально, но это избавит меня от необходимости загружать несколько файлов каждый раз.
Каковы ваши мысли? Я полностью рассматриваю это неправильно (я, как правило, делаю это с большинством моих проблем, пока кто-то не направит меня в правильном направлении! Haha)
Спасибо, кучи!
Райан
Изменить 2011-02-07:
Прочитав ответы, которые я получил до сих пор, я пробовал несколько вещей.
Предполагая, что приведенные ниже классы загружаются автоматически из точного местоположения на диске (Database_Database будет загружаться в "classes/Database/Database.php" ), будет ли эта настройка эффективной?
class Database_Mysql_Database extends Database_DatabaseAbstract implements Database_Database {}
Database_Mysql_Database - обычный класс, Database_DatabaseAbstract - абстрактный класс с базовыми методами, обычными для разных типов баз данных, Database_Database - это интерфейс, который пользователи будут указывать для обеспечения совместимости с их классами.
Я на правильном пути?