如何从UserFrosting的另一个类中访问配置变量?
任何人都可以给我一个名称空间和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
$app
只是整个应用程序运行的全局实例UserFrosting
。由于UserFrosting
延伸Slim\Slim
,您可以静态地使用getInstance()
method访问:
$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();
//...
但MyPDF类需要扩展TCPDF_TCPDF。 MyPDF正在一个扩展UserFrosting \ BaseController类的类中实例化 - '$ pdf = new MyPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,true,'UTF-8',false);'嗯..我很困惑这个,对不起,如果问题不明确.. :( – nockieboy
但是错误是关于实例化'UFModel',而不是'MyPDF'类。 – aslawin
是的,对不起 - 我只是想找到一个解决方案,并在黑暗中摸索这个问题是我需要访问$ app,这是我调用'new MyPDF()'的类的实例,如果没有这个,我不能访问'config []'vars MyPDF class – nockieboy
Thanks @alexw - 我知道你会有一个简单的解决方案!:) – nockieboy