如何从 UserFrosting 中的另一个 class 访问配置变量?
How to access config vars from within another class in UserFrosting?
谁能帮我快速掌握命名空间和 UserFrosting 环境?
为了解释我的问题,我使用 TCPDF 从 UserFrosting 中的数据创建 PDF 文档。我在 UserFrosting 命名空间中创建了一个自定义 class、MyPDF,因此我可以通过键入 $pdf = new MyPDF(blahblah);
在 UF 命名空间中创建一个 PDF,并且工作正常。
问题出在 MyPDF class 本身 - 我需要能够从 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
写错了:你不能实例化一个抽象class。创建从 UFModel
扩展的 class 并实现此 class.
的所有抽象方法
例如,如果您的 UFModel
class 看起来像这样:
<?php
abstract class UFModel
{
abstract public function getValue();
}
您应该创建 class 来扩展此 class 并实现所有抽象方法:
<?php
class MyModel extends UFModel
{
public function getValue()
{
return 'exampleValue';
}
}
现在您可以使用 new
运算符创建对象:
<?php
//...
$ufapp = new MyModel();
//...
$app
只是整个应用程序运行的 UserFrosting
的全局实例。由于 UserFrosting
扩展了 Slim\Slim
,您可以使用 getInstance()
method:
静态访问它
$app = UserFrosting::getInstance();
不过,更好的方法是实际将 $app
传递给 MyPDF
构造函数。但是,根据您的情况以及您在其他地方使用 MyPDF
,这可能会更加困难。
谁能帮我快速掌握命名空间和 UserFrosting 环境?
为了解释我的问题,我使用 TCPDF 从 UserFrosting 中的数据创建 PDF 文档。我在 UserFrosting 命名空间中创建了一个自定义 class、MyPDF,因此我可以通过键入 $pdf = new MyPDF(blahblah);
在 UF 命名空间中创建一个 PDF,并且工作正常。
问题出在 MyPDF class 本身 - 我需要能够从 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
写错了:你不能实例化一个抽象class。创建从 UFModel
扩展的 class 并实现此 class.
例如,如果您的 UFModel
class 看起来像这样:
<?php
abstract class UFModel
{
abstract public function getValue();
}
您应该创建 class 来扩展此 class 并实现所有抽象方法:
<?php
class MyModel extends UFModel
{
public function getValue()
{
return 'exampleValue';
}
}
现在您可以使用 new
运算符创建对象:
<?php
//...
$ufapp = new MyModel();
//...
$app
只是整个应用程序运行的 UserFrosting
的全局实例。由于 UserFrosting
扩展了 Slim\Slim
,您可以使用 getInstance()
method:
$app = UserFrosting::getInstance();
不过,更好的方法是实际将 $app
传递给 MyPDF
构造函数。但是,根据您的情况以及您在其他地方使用 MyPDF
,这可能会更加困难。