如何从UserFrosting的另一个类中访问配置变量


How to access config vars from within another class in UserFrosting?

谁能给我一个快速的手与名称空间和UserFrosting环境?

为了解释我的问题,我使用TCPDF从UserFrosting中的数据创建PDF文档。我已经在UserFrosting名称空间中创建了一个自定义类MyPDF,因此我可以通过输入$pdf = new MyPDF(blahblah);在UF名称空间中创建PDF,并且工作良好。

问题是与MyPDF类本身-我需要能够从UF引用配置变量,不知道我怎么能做到这一点-即:

namespace UserFrosting;
 class MyPDF extends 'TCPDF_TCPDF {
   public function Header() {
      $image_location = $this->_app->config('upload.path')

如何从MyPDF中访问config ?:?:

我试过:

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

…但是不行。我得到这个错误:

Cannot instantiate abstract class UserFrosting'UFModel

$app只是运行整个应用程序的UserFrosting的全局实例。由于UserFrosting扩展了Slim'Slim,您可以使用getInstance()方法静态地访问它:

$app = UserFrosting::getInstance();

但是,一个更好的方法是将$app传递给MyPDF构造函数。但是,根据您的情况和使用MyPDF的其他地方,这可能会更加困难。

写错了:你不能实例化一个抽象类。创建一个扩展自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抽象类的更多信息