【问题标题】:PHP how move function in a class correctlyPHP如何正确移动类中的函数
【发布时间】:2013-10-22 08:48:29
【问题描述】:

根据这个有用的答案mysqli bind_param() expected to be a reference, value given 我可以创建动态查询。

现在,我正在学习 OOP,但我无法理解移动该功能、渲染保护和从其他方法访问的正确模式。

功能是:

function refValues($arr){
    if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
    {
        $refs = array();
        foreach($arr as $key => $value)
            $refs[$key] = &$arr[$key];
        return $refs;
    }
    return $arr;
}

现在我在一个类中调用它:

class MyBaseCrud {
// other stuff

$rc = call_user_func_array(array($stmt, 'bind_param'), refValues($params));
// other stuff
}

我会更多地了解 OOP,所以我会采用以下方法进行转换:

protected function refValues($array) {
    // body method
}

正确调用后
$rc = call_user_func_array(array($stmt, 'bind_param'), refValues($params));

当然,我确实尝试在 body 类中移动该函数

protected function refValues($arr){
    if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
    {
        $refs = array();
        foreach($arr as $key => $value)
            $refs[$key] = &$arr[$key];
        return $refs;
    }
    return $arr;
}

保持不变

$rc = call_user_func_array(array($stmt, 'bind_param'), refValues($params));

没有成功。

请,温柔点...现在学习 OOP :)

【问题讨论】:

  • @Virus721 我不能同意; PHP 中的 OOP 非常棒,尤其是在 SPL 实现和 PHP 5.5 之后
  • 那不是 OOP,那是作弊 :o PHP 本身就有缺陷和误解。
  • @Virus721 当涉及到 PHP 的实现时,所有这些毫无意义的 OOP 讨论。 OOP 没有通用的概念。如果您打算将 PHP 引用到任何其他实现 OOP 的语言,那么您当然可以主观地认为其中一种语言优于另一种语言。 PHP 中的 OOP 功能只是对象最终将如何接收消息、处理数据以及向其他对象发送消息的另一种实现,就像不同编程语言的任何实现都试图完成同样的事情一样。跨度>

标签: php oop


【解决方案1】:

如果您从类中(从另一个方法)调用refValues(),您应该使用$this->refValues($params)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    相关资源
    最近更新 更多