Использование анонимной функции в конструкторе класса и использование в методе

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

Мои занятия

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: Call to undefined method siteAnalytics::db_count()

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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'"),
    );
}

Другие вопросы по теме