我一直在网上寻求有关如何设计我的 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() {}
}
我会在哪里使用通过构造函数传递的 ID 在构造函数中获取我的对象的所有数据?我应该在构造函数中传递一个 PDO 对象还是我错过了一些有价值的设计模式?所有的 SQL 都应该在这里硬编码吗?我使用 PDO 得到的一件事是我可以很容易地从 MySQL 切换到 MSSQL,但是两者的 SQL 语法不同,所以不会仍然给我带来问题吗?
我知道这些都是理论上的问题,没有一个好的答案,但我缺乏工作同事来讨论这个问题(当我说他们甚至不知道设计模式是什么时我不是在开玩笑)所以我发现自己转向了网络。如果我的问题太模糊,请随意提出一个好的讨论类型的地方,我可以问这种东西,我将非常感激:)