#php #class #methods #constructor
#php #класс #методы #конструктор
Вопрос:
Я пытаюсь использовать анонимную функцию в конструкторе, присвоить ее общедоступной переменной, а затем использовать эту переменную в методах.
Мой класс
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()
Я получаю ошибку в siteData()
методе в массиве, где $this->db_count
вызывается!
Я знаю, что могу передавать анонимные функции через методы, но почему это не работает при передаче через конструктор.
Ответ №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'"),
);
}