Как получить доступ к конфигурационным переменным из другого класса в UserFrosting?

Может ли кто-нибудь дать мне быструю руку с пространствами имен и средой UserFrosting?

Чтобы объяснить мою проблему, я использую TCPDF для создания PDF документа из данных в UserFrosting. Я создал собственный класс MyPDF в пространстве имен UserFrosting, чтобы я мог создать PDF в пространстве имен UF, набрав $pdf = new MyPDF(blahblah); и это прекрасно работает.

Проблема связана с самим классом MyPDF — мне нужно иметь возможность ссылаться на конфигурационные переменные из UF и не знаю, как я могу это сделать — т.е.

namespace UserFrosting;

class MyPDF extends \TCPDF_TCPDF {

public function Header() {
$image_location = $this->_app->config('upload.path')

Как я могу получить доступ config изнутри MyPDF? ❓

Я пробовал:

class MyPDF extends \TCPDF_TCPDF {

public function Header() {
$ufapp = new UFModel();
$image_location = $ufapp->config('upload.path')

… но не игра в кости. Я получаю эту ошибку:

Cannot instantiate abstract class UserFrosting\UFModel

1

Решение

$app это просто глобальный пример UserFrosting что все приложение работает на. поскольку UserFrosting продолжается Slim\Slim, вы можете получить к нему доступ статически, используя getInstance() метод:

$app = UserFrosting::getInstance();

Тем не менее, лучшим способом было бы $app в ваш MyPDF конструктор. Тем не менее, в зависимости от вашей ситуации и где вы еще используете MyPDFЭто может быть сложнее.

1

Другие решения

Это написано по ошибке: вы не можете создать экземпляр абстрактного класса. Создать класс, который простирается от UFModel и реализовать все абстрактные методы из этого класса.

Например, если ваш UFModel класс выглядит так:

<?php

abstract class UFModel
{
abstract public function getValue();
}

Вы должны создать класс, который расширяет этот класс и реализует все абстрактные методы:

<?php

class MyModel extends UFModel
{
public function getValue()
{
return 'exampleValue';
}
}

Теперь вы можете создать объект, используя new оператор:

<?php

//...
$ufapp = new MyModel();
//...

Подробнее об абстрактных классах в PHP

0

По вопросам рекламы [email protected]