如何在MVC中构建模型?
3 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
作为业务逻辑的一切都属于模型,无论是数据库查询,计算,REST调用等。
您可以在模型本身中访问数据,MVC模式不会限制您这样做。您可以使用服务,映射器和其他方法对其进行糖涂层,但模型的实际定义是处理业务逻辑的层,仅此而已。它可以是一个类,一个函数,或一个包含大量对象的完整模块,如果这是你想要的。
拥有一个实际执行数据库查询的单独对象总是更容易,而不是直接在模型中执行它们:这在单元测试时会特别有用(因为在模型中注入模拟数据库依赖项很容易):
class Database { protected $_conn; public function __construct($connection) { $this->_conn = $connection; } public function ExecuteObject($sql, $data) { // stuff }}abstract class Model { protected $_db; public function __construct(Database $db) { $this->_db = $db; }}class User extends Model { public function CheckUsername($username) { // ... $sql = "SELECT Username FROM" . $this->usersTableName . " WHERE ..."; return $this->_db->ExecuteObject($sql, $data); }}$db = new Database($conn);$model = new User($db);$model->CheckUsername('foo');
此外,在PHP中,您很少需要捕获/重新抛出异常,因为保留了回溯,特别是在您的示例中。只是抛出异常并在控制器中捕获它。
- 3 回答
- 0 关注
- 1472 浏览
添加回答
举报
0/150
提交
取消