1

最近我开始使用Codeigniter框架来开发RESTFul移动应用程序的 Web 服务。

当我查看网站和 youtube 上的各种教程时,我发现 a 的概念Model在 PHP 应用程序上下文中的使用方式不同。

有何不同?

好吧,正如我一直认为的模型类应该是这样的,

猫.php

<?php

class Cat {
   
   // Class variables
   private $colour;
   
   public __construct() {
      $colour = 'Brown';
   }

   // Getters and Setters

   public function getColour() {
      return $this->colour;
   }

   public function setColour($newColour) {
      $this->colour = $newColour;
   }

}

?>

但是,在通过 Internet 搜索好的教程时,我发现人们只是在使用可以访问数据库以获取数据并将其返回到Controller.

我还没有看到任何人在 Model 中编写普通类(如果你是 Java 人,我们称之为 POJO


现在,在阅读和观看这些教程之后,我所需要的,

在 PHP 应用程序框架的上下文中,模型类是数据库的连接器,它在查询时返回与应用程序相关的数据。在我们称之为 SQL 人的语言中,

  • CRUD 函数

    • 创造
    • 更新
    • 删除

所以,如果我错了,请纠正我。

在使用类似 Codeigniter 的框架创建的 Web 应用程序中,使用 MVC 模式来设计应用程序。模型类将具有将应用程序连接到数据库并返回数据的功能,并有助于在应用程序的数据库上执行所有 CRUD 操作。

4

1 回答 1

5

好吧,如果您使用过 C# 或 Ruby,那么您可以找到应用 MVC 模式的好方法。在我看来,在 PHP 中,人们有时会对这些术语感到困惑。我在 PHP 中使用 MVC 模式的方式如下:

控制器

class UserController { 

    private $repo;

    public function __construct() { 
        $this->repo = new UserRepository(); // The file which communicates with the db. 
    }

    // GET
    // user/register
    public function register() { 
        // Retrieve the temporary sessions here. (Look at create function to understand better)
        include $view_path;
    }

    // POST
    // user/create
    public function create() { 
        $user = new User($_POST['user']); // Obviously, escape and validate $_POST;
        if ($user->validate())
            $this->repo->save($user); // Insert into database

        // Then here I create a temporary session and store both the user and errors.
        // Then I redirect to register
    }

}

模型

class User { 

    public $id;
    public $email;

    public function __construct($user = false) {
        if (is_array($user))
            foreach($user as $k => $v) 
                $this->$$k = $v;
    } 

    public function validate() { 
        // Validate your variables here
    }

}
于 2012-08-25T09:56:03.347 回答