我正在使用phalcon 2.0.0,我试图用另一个函数调用一个函数但是从同一个类调用如下所示,由于某些原因我得到一个空白页面。当我首先评论第二个函数的调用时,页面正确加载。
<?php
use Phalcon\Mvc\User\Component;
class Testhelper extends Component {
public function f1($data) {
$tmp = $this->f2($data);
return $tmp;
}
public function f2($data) {
return '5'; // just testing
}
}
然后通过伏特功能扩展器访问f1功能
$compiler->addFunction('customfunc', function($resolvedArgs, $exprArgs) {
return 'Testhelper ::f1('.$resolvedArgs.')';
});
如果有人可以帮助我,我们将非常感激。
谢谢你们
答案 0 :(得分:1)
您试图在Volt中静态调用TestHelper
f1()
,您的类不会将该函数公开为静态。
您可以像这样更改代码:
<?php
use Phalcon\Mvc\User\Component;
class Testhelper extends Component
{
public static function f1($data)
{
$tmp = self::f2($data);
return $tmp;
}
public static function f2($data)
{
return '5'; // just testing
}
}
你的Volt功能会起作用。但是你必须要记住,因为你静态地调用了东西,所以你不能立即访问Component
所提供的所有di容器服务:
$this->session
$this->db
您需要修改代码以使用getDefault()
另一种选择是立即使用代码,但在di容器中注册TestHelper
,如下所示:
$di->set(
'test_helper',
function () {
return new TestHelper();
}
);
然后你的伏特功能将需要改为:
$compiler->addFunction(
'customfunc',
function ($resolvedArgs, $exprArgs) {
return '$this->test_helper->f1('.$resolvedArgs.')';
}
);