Php 将函数与助手类分开好吗?

Php 将函数与助手类分开好吗?,php,oop,model-view-controller,Php,Oop,Model View Controller,我对MVC概念本身非常陌生,但我正在慢慢地开始掌握它,以及是什么使它如此有用 我在我的应用程序中有不同的选项卡,它们是层次结构中的级别(我称之为实体),每个选项卡由两个类表示——一个是包含所有与数据库通信的方法的绑定类,另一个是只是实体骨架的助手类,两者都在同一个文件中。我想知道这是否是接近设计模式的正确方法?我还没有建立一个模型或控制器,因为我不确定它们现在会出现在哪里。而且我现在对使用ORM不感兴趣 class CompanyBinding extends EntityBinding {

我对MVC概念本身非常陌生,但我正在慢慢地开始掌握它,以及是什么使它如此有用

我在我的应用程序中有不同的选项卡,它们是层次结构中的级别(我称之为实体),每个选项卡由两个类表示——一个是包含所有与数据库通信的方法的绑定类,另一个是只是实体骨架的助手类,两者都在同一个文件中。我想知道这是否是接近设计模式的正确方法?我还没有建立一个模型或控制器,因为我不确定它们现在会出现在哪里。而且我现在对使用ORM不感兴趣

class CompanyBinding extends EntityBinding {
    function __construct() {
        parent::__construct();
    }


    public function get($criteria = array()) {
        // method to retrieve an array of DB rows, each represented by the helper class

            [...]

        return $sth->fetchAll(PDO::FETCH_CLASS, 'Company');
    }

    public function get_by_id($id) {
        // method to retrieve an one single object of the helper class

        $sth->setFetchMode(PDO::FETCH_CLASS, 'Company');
        return $sth->fetch();
    }
}


class Company extends Entity {
    public $id;
    public $name;
    public $email;
    public $phone;

    // just properties. some classes have a __construct() function to manipulate some fields after retrieval

    [...]
}
我现在需要模型课吗?我考虑控制器可以执行->get函数并加载适当的类,因为实体的名称是通过AJAX从前端传递的


顺便说一下,我也很困惑。控制器应该吸收所有AJAX请求,还是我应该创建一个名为AJAX.php的文件来处理这些请求,并将控制器类置于public\u html之上,以便用户无法访问类文件?

将这些类分离到自己的文件中。PHP在打开文件位置后缓存文件位置方面做得不错,所以您不必担心IO。一般来说,将多个类放在一个文件中是不好的做法。它不会破坏您的应用程序,但可能会导致更多经验丰富的开发人员崩溃流泪。:)


除此之外,您还可以。

Once并不是简单地将多个类转储到一个文件中。@pee我同意,我从来没有将多个类放入一个文件中,这可能是一个旧的Java习惯,但它有助于保持清晰。我是否应该将它们放入一个类中?不,您应该将它们放入两个文件中。您能帮助我模型是从何而来的吗?如果所有的业务逻辑都由绑定负责,我的意思是……好的。我同意。我可以在…绑定文件中放一个require子句吗?可以,但最好在应用程序中使用引导文件。通过这种方式,您可以在一个位置拥有所有的“require”和“include”行。更好的是,您可以使用自动加载,这意味着您甚至不必担心对任何类使用“require”或“include”。为此,请看一看