我怎么能建立一个php mvc与库和助手我'我寻找的想法


how can i build a php mvc with libraries and helpers I'm looking for ideas

此时我想构建一个MVC框架。一切都很好,但现在我在控制器和模型之间出现了问题

关于我的问题的例子

Model.php

class Model{
   public function __construct(){
        include('libraries/mysql.php');
        new mysql();
    }
}

和mysql库中我有一个自然的mysql方法,如select, insert,…现在我想使用mysql类在我的users_models通过扩展从模型

我的user_model类

class user_model extends Model{
      public function get_user(){
           $this->mysql->select();
      }
}

哦…从哪里开始。

让我们从模型开始。在MVC中,模型不是一个类,而是一个应用层。它应该由域对象组成,它们负责业务逻辑。负责与存储交互的对象,通常是- DataMappers

下. .嗯. .你知道除了MySQL之外还有其他(实际上更好的)数据库吗?您似乎创建了一些mysql对象包装器。重点是什么?特别是当php有PDO时。

关于连接。控制器应该能够访问创建"模型"的工厂类。数据库连接已注入对象

你不希望在每个实例中都包含你的lib。(如果它真的是一个库)就一次。

require_once('libraries/mysql.php');
class Model{
   protected $_mysql;
   public function __construct(){
        $this->_mysql = new mysql();
    }
}
class user_model extends Model {
    public function foo() {
       $this->_mysql->select();
    }
}

如果你想像JohnP建议的那样使用依赖注入,你将需要更多的代码。(未经测试,但应该概述的方式(是的,我知道真正的DI工作方式不同))

interface my_db {
 public function select();
 public function insert();
}
class mysql implements my_db {
 public function select() {
   // select code
 }
 public function insert() {
  // insert code
 }
}
class Model{
   protected $_db;
   public function __construct(my_db $DB){
        $this->_db = $DB;
    }
}
class user_Model extends Model {
    public function foo(){
       $this->_db->select();
    }
}
$model = new Model(new mysql());

试试这个:

   class Model{
       protected $mysql;
       public function __construct(){
            include_once('libraries/mysql.php');
            $this->mysql = new mysql();
       }
    }