Как использовать функцию из другого класса

#php #laravel #wordpress

Вопрос:

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

Этот список уже собран в следующей функции:

 public static function getCompaniesAwaitingCheck()
{
    $awaitingChangeApproval = self::getAwaitingChangeApproval();
    $awaitingPublication = self::getAwatingPublication();
    return array_merge($awaitingChangeApproval, $awaitingPublication);
}
 

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

В нем есть следующая функция:

 public function notifyPendingApproval()
{

    $dailyClaimMailTitle = get_field("daily_claim_overview_mail_title", 'options');
    $dailyClaimMailText = get_field('daily_claim_overview_mail_text', 'options');
    $dailyClaimMailAddress = get_field('daily_claim_overview_mail', 'options');

    $company = new Company();
    $pendingCompany = $company->getCompaniesAwaitingCheck();

    wp_mail(
        $dailyClaimMailAddress,
        ecs_get_template_part('views/email/template', [
            'title' => $dailyClaimMailTitle,
            'text' => $dailyClaimMailText, $pendingCompany,
        ], false),
        ['Content-Type: text/html; charset=UTF-8']
    );

}
 

Когда dd($pendingCompany); я получаю сообщение об ошибке: PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function ModelsModel::__construct(), 0 passed in Emails/AdminPendingApprovalNotification.php on line 16 and exactly 1 expected

строка 16: $company = new Company();

К сожалению, не могу заставить его работать, я новичок, буду признателен за некоторую помощь. Спасибо!

Комментарии:

1. Что именно не работает? Как это связано с WordPress или Laravel?

2. Каковы названия двух классов, которые вы упомянули в своем вопросе?

3. @NicoHaase Использует WordPress и Laravel. Когда dd($pendingCompany); я получаю сообщение об ошибке: PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function ModelsModel::__construct(), 0 passed in Emails/AdminPendingApprovalNotification.php on line 16 and exactly 1 expected

4. Что вы пытались сделать, чтобы решить эту проблему? Вы не поделились строкой 16 данного класса

5. Попробуйте Company::getCompaniesAwaitingCheck() , но также прочитайте о том, как и когда использовать статику.

Ответ №1:

Ваш метод getCompaniesAwaitingCheck статичен, поэтому вы должны называть его так:

 $pendingCompany = Company::getCompaniesAwaitingCheck();
 

Произошла ошибка, поскольку вашему Company классу требуются аргументы в __construct методе, которые вы не предоставили.