【问题标题】:Using anonymous function in class constructor and using in method在类构造函数中使用匿名函数并在方法中使用
【发布时间】:2019-08-31 05:18:32
【问题描述】:

我正在尝试在构造函数中使用匿名函数,将其分配给公共变量,然后在方法中使用该变量。

我的班级

class siteAnalytics {
    public $db_count;                                           // FUNCTION "$db_count" - CALLED FROM "FUNCTIONS.PHP"
    public $db_sum;                                             // FUNCTION "$db_sum" - CALLED FROM "FUNCTIONS.PHP"
    public $db_readAll;                                         // FUNCTION "$db_readAll" - CALLED FROM "FUNCTIONS.PHP"

    public function __construct($db_count, $db_sum, $db_readAll) {
        $this->db_count   = $db_count;
        $this->db_sum     = $db_sum;
        $this->db_readAll = $db_readAll;
    }

    public function siteData(){
        // CREATE "SITE DATA" ARRAY FROM QUERIES
        $SD_array = array(
            'U_active'       => $this->db_count("users", "*", "WHERE a_status='true'"),
        );
    }
}

课堂呼吁

$siteAnalytics = new siteAnalytics($db_count, $db_sum, $db_readAll);
print_r($siteAnalytics->siteData());

错误是什么?

未捕获的错误:调用未定义的方法 siteAnalytics::db_count()

我在调用$this->db_count 的数组中的siteData() 方法中遇到错误!

我知道我可以通过方法传递匿名函数,但是为什么它在通过构造函数时不起作用。

【问题讨论】:

    标签: php class methods constructor


    【解决方案1】:

    您可以尝试将属性分配给局部变量,然后像函数一样调用它:

    public function siteData(){
        $db_count = $this->db_count;
        // CREATE "SITE DATA" ARRAY FROM QUERIES
        $SD_array = array(
            'U_active'       => $db_count("users", "*", "WHERE a_status='true'"),
        );
    }
    

    更新: 您可以尝试用一对括号将检索的属性括起来:

    public function siteData(){
        // CREATE "SITE DATA" ARRAY FROM QUERIES
        $SD_array = array(
            'U_active'       => ($this->db_count)("users", "*", "WHERE a_status='true'"),
        );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-08
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 2012-11-10
      • 2021-12-20
      • 2012-01-22
      相关资源
      最近更新 更多