有人能帮我快速处理名称空间和UserFrosting环境吗?
为了解释我的问题,我使用TCPDF从UserFrosting中的数据创建一个PDF文档。我已经在MyPDF命名空间中创建了一个自定义类UserFrosting,所以我可以通过键入$pdf = new MyPDF(blahblah);在UF命名空间中创建一个PDF,这样就可以了。
问题在于MyPDF类本身--我需要能够从UF引用配置vars,并且不知道如何做到这一点--即:
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发布于 2016-09-06 15:46:27
$app只是运行整个应用程序的UserFrosting的全局实例。由于UserFrosting扩展了Slim\Slim,所以可以使用方法静态地访问它。
$app = UserFrosting::getInstance();
不过,更好的方法是将$app实际传递到MyPDF构造函数中。但是,取决于您的情况和您使用MyPDF的其他位置,这可能会更加困难。
发布于 2016-09-06 08:56:38
它是错误编写的:,您不能实例化抽象类。创建从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中的抽象类的更多信息
https://stackoverflow.com/questions/39344681
复制相似问题