Использование анонимной функции в конструкторе класса и использование в методе - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь использовать анонимную функцию в конструкторе, назначить ее для публичной переменной и затем использовать эту переменную в методах.

Мой класс

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());

В чем ошибка?

Uncaught Error: вызов неопределенного метода siteAnalytics :: db_count ()

Я получаю ошибку в методе siteData() в массиве, где вызывается $this->db_count!

Я знаю, что могу передавать анонимные функции через методы, но почему это не работает при прохождении через конструктор.

1 Ответ

2 голосов
/ 09 апреля 2019

Вы можете попытаться присвоить свойство локальной переменной, а затем вызвать его как функцию:

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'"),
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...