我如何用我正在寻找的库和助手构建一个php mvc

我如何用我正在寻找的库和助手构建一个php mvc,php,model-view-controller,frameworks,Php,Model View Controller,Frameworks,此时,我想构建一个MVC框架。一切都很顺利,但现在控制器和模型之间出现了问题 举例说明我的问题 Model.php class Model{ public function __construct(){ include('libraries/mysql.php'); new mysql(); } } 在mysql库中,我有一个自然的mysql方法,比如选择、插入。。。 现在我想在我的users\u模型中通过扩展模型来使用mysql类 我的用户模型类

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

举例说明我的问题

Model.php

class Model{
   public function __construct(){
        include('libraries/mysql.php');
        new mysql();
    }
}
在mysql库中,我有一个自然的mysql方法,比如选择、插入。。。 现在我想在我的users\u模型中通过扩展模型来使用mysql类

我的用户模型类

class user_model extends Model{
      public function get_user(){
           $this->mysql->select();
      }
}
结果错误找不到选择方法…

请尝试以下操作:

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

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

您不希望在每个实例中都包含lib。如果它真的是一个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());

您不希望在每个实例中都包含lib。如果它真的是一个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());
哦。。从哪里开始

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

接下来。。好你知道除了MySQL之外还有其他更好的数据库吗?您似乎创建了一些mysql对象包装器。重点是什么?特别是当php已经实现时

至于连接。控制器应该有权访问创建模型的工厂类。对象中已插入数据库连接。

Oh。。从哪里开始

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

接下来。。好你知道除了MySQL之外还有其他更好的数据库吗?您似乎创建了一些mysql对象包装器。重点是什么?特别是当php已经实现时


至于连接。控制器应该有权访问创建模型的工厂类。数据库连接已经注入到对象中。

不要这样实例化。查找一些称为依赖注入的内容。请花些时间阅读以提问。不要这样实例化。查找称为依赖项注入的内容。请花一些时间阅读以提问。您不想为每个已编辑的类实例包含库,只需使用include_once代替。您不想为每个已编辑的类实例包含库,只需使用include_once代替是,抽象,抽象,抽象是,抽象,抽象,摘要