谁能给我一个快速的手与名称空间和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抽象类的更多信息