【问题标题】:Best practice OOP with MVC and PHP functions?使用 MVC 和 PHP 函数的最佳实践 OOP?
【发布时间】:2017-01-10 19:58:12
【问题描述】:

OOP 新手,所以我正在尝试找出最佳实践。此代码基于我要添加到的现有脚本。

大多数有这个问题的帖子都告诉发帖人这样编码:

function ($arg1, $arg2){
 //some code
}

然后调用:

function($a1, $a2);

我有一个基于 OOP 的函数(有效),但它看起来不太正确,当我尝试将其作为建议的方法调用时,我得到:

数组到字符串的转换..在线..数组

这是我收集输出的(工作)函数:

    public function getMail($type, $id = 0) {
        $query = $this->db->query("SELECT * FROM km_mail WHERE id = '" . (int)$id . "' AND `type` = '" . $this->db->escape($type) . "'");

        foreach ($query->rows as $result) {
            $mail_data[$result['title']] = $result['value'];
        }

    return $mail_data;
}

这是工作(但丑陋)的部分 - 它返回请求的数据库列(但看起来错误?):

$this->model_setting_mail->getMail('order')['update_link'];

当我尝试像这样请求列时,出现数组到字符串转换错误:

$this->model_setting_mail->getMail('order','update_link');

在我的示例中,order = $type, update_link = $result['value'] 和 $id = 0 是默认值,除非传递了 $id。

【问题讨论】:

  • 对于一些性能提示。如果您获取一些东西并构建一个数组,您会将所有数据库条目放入内存中。如果您有很多条目并且内存限制不够高,这可能会导致问题。最好直接处理输出。
  • 谢谢,这张表只有大约 30 行左右,不会增长。了解有用!
  • 那么这不是一个大问题,但是如果您有数千个条目并且它们增加了您的苹果运行一天超过您的内存限制并且您的站点处于脱机状态的可能性。但是有 30 个条目不是问题。

标签: php oop model-view-controller


【解决方案1】:

您展示的第一个示例是从函数返回的值中选择数组元素的简写方式。

$this->model_setting_mail->getMail('order')['update_link'];

等同于:

$result = $this->model_setting_mail->getMail('order');
print $result['update_link'];

第二个例子是将两个值传递给一个函数。

它们完全不同。

【讨论】:

  • 哦,我明白了!所以这就解释了为什么它不会起作用。谢谢,这使事情变得更加清晰!我目前的方法是最有效的方法吗?
  • 看起来没问题,你也可以避免整个循环并返回 $query->result();也许我不完全理解你的循环,但它似乎是多余的。
  • 基本上,我正在尝试在数据库中查询特定列以提供模板。感谢 $query->result() 提示。随着我的脚步更加深入,一旦我更好地了解我在做什么,我将尝试优化此代码。
  • 最后一个快速提示,最好避免使用 SELECT *,尽可能只选择选择值,即 SELECT id、name...
  • 即使我会使用所有的记录?这是为什么呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
相关资源
最近更新 更多