【问题标题】:php mvc - apply model's methods to result from dbphp mvc - 将模型的方法应用于 db 的结果
【发布时间】:2015-09-30 10:02:39
【问题描述】:

在许多 php 框架中,我们可以这样做:

class Test extends Model
{
    protected $first;
    protected $second;

    public function getAllAttributes() {
        return $this->first.','.$this->second;
    }
}

如何在我自己的解决方案中做到这一点?我目前的模型:

class Model
{

    // ..

    public function all() {
        return mysqli_query($con, 'select * from '.$this->table);
    }

}

用法:

$test = new Test();
$result = $test->all();
foreach ($result as $t) {
    echo $t->getAllAttributes();
}

【问题讨论】:

  • 但我认为他们可能将值存储在来自构造函数的变量中,或者其他地方并没有神奇地出现在这些变量中
  • 我认为您想(或可以)使用 PDO 的 setFetchMode 将结果直接选择到预定义的类中 (PDO::FETCH_CLASS)
  • 哇,看起来很棒!谢谢。

标签: php oop model


【解决方案1】:

我了解到您希望从 MySQL 查询中创建当前类的对象,而无需在每个模型中再次处理查询生成和对象实例化。

您描述的模式(模型负责加载自身)称为Active Record,由 Ruby on Rails 流行起来,然后在 CakePHP 和 Laravel 等 PHP 框架中进行了改编。 p>

没有单一的解决方案如何实现它,查看这些框架的代码以了解它们的工作原理。

重要的部分是模型必须以某种方式描述自己,即从数据库加载哪些属性,它们的数据类型是什么,使用哪个表。这可以基于 MySQL 中的 DESCRIBE $table 结果,通过“注释”和反射,或显式使用代码。

【讨论】:

  • 谢谢,我不知道它是怎么叫的,也不知道用谷歌搜索什么 :)
猜你喜欢
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多