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

时间:2016-09-06 08:53:39

标签: php namespaces 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')

如何从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

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript"> $(document).ready(function () { $('.form-control').change(function () { alert(this.value); }); }); </script> 只是运行整个应用程序的$app的全局实例。自UserFrosting扩展UserFrosting以来,您可以使用getInstance() method静态访问它:

Slim\Slim

但更好的方法是将$app = UserFrosting::getInstance();实际传递到$app构造函数中。但是,根据您的情况以及您使用MyPDF的其他位置,这可能会更加困难。

答案 1 :(得分:0)

错误地写了:您无法实例化抽象类。创建从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();
//...

More about abstract classes in PHP