Я искал помощи в Интернете о том, как спроектировать мои php-классы для разделения моей бизнес-логики и уровней данных. Я начал проектировать класс, который мне показался довольно крутым, но затем обнаружил PDO и ADODB, и у меня был приятный момент, когда я понял, что воссоздаю колесо. Моя проблема сейчас в том, что я до сих пор не понимаю, как разделить свою логику и все мои SQL-запросы.
Я вычеркнул почти все из своей схемы БД и записал эти две таблицы, потому что я думаю, что их будет довольно легко понять. Допустим, у меня есть файлы с путем, где они сохранены на моем сервере, которые находятся в каталогах (эти каталоги могут быть в других каталогах). Допустим, мне понадобятся базовые функции, такие как получение корневого каталога из одного из моих файлов или получение списка каталогов внутри текущего каталога.
+--------------------+ +----------------+
| Files | | Directories |
+--------------------+ +----------------+
| id | | id |
| name | | name |
| path | | directory_id |
| directory_id | +----------------+
+--------------------+
Будет ли хорошо спроектированный класс выглядеть так:
class Files {
public function __construct( $file_id ) {}
public function getDirectory() {}
public function getRootDirectory() {}
public function getPath() {}
public function move( $directory_id ) {}
}
class Directories {
public function __construct( $directory_id ) {}
public function getRootDirectory() {}
public function move( $directory_id ) {}
public function listContent() {}
}
Где я мог бы получить все данные для моих объектов в конструкторе, используя идентификатор, переданный через конструктор? Должен ли я передать объект PDO в конструктор, или я пропустил какой-то ценный шаблон проектирования? Должен ли весь SQL быть здесь жестко закодирован? Одна вещь, которую я получаю с PDO, - это то, что я могу очень легко переключаться с MySQL на MSSQL, но у обоих есть различия в синтаксисе их SQL, так что все равно не вызовет у меня проблем?
Я знаю, что это более теоретические вопросы без ОДНОГО хорошего ответа, но мне не хватает коллег по работе, чтобы обсудить это (я не шучу, когда говорю, что они даже не знают, что такое шаблон проектирования), поэтому я обнаруживаю, что обращаюсь к паутина. Если мой вопрос слишком расплывчатый, не стесняйтесь предложить хорошее место для дискуссий, я мог бы спросить такого рода вещи, и я был бы чрезвычайно благодарен:)