Phalcon 库 class 在另一个库中调用一个函数
Phalcon library class calling a function within another
我使用的是 phalcon 2.0.0,我正尝试在另一个函数中调用一个函数,但来自同一个 class,如下所示,出于某种原因,我得到一个空白页。当我从第一个开始评论第二个函数的调用时,页面正确加载。
<?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
}
}
顺便说一句,我像这样通过 volt 函数扩展程序访问 f1 函数
$compiler->addFunction('customfunc', function($resolvedArgs, $exprArgs) {
return 'Testhelper ::f1('.$resolvedArgs.')';
});
如果有人能帮助我,我将不胜感激。
谢谢大家
您正在尝试在 Volt 中静态调用 TestHelper
f1()
,而您的 class 并未将该函数公开为静态。
您可以这样更改代码:
<?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 容器
另一种选择是使用您现在拥有的代码,但像这样在您的 di 容器中注册 TestHelper
:
$di->set(
'test_helper',
function () {
return new TestHelper();
}
);
然后您的电压函数需要更改为:
$compiler->addFunction(
'customfunc',
function ($resolvedArgs, $exprArgs) {
return '$this->test_helper->f1('.$resolvedArgs.')';
}
);
我使用的是 phalcon 2.0.0,我正尝试在另一个函数中调用一个函数,但来自同一个 class,如下所示,出于某种原因,我得到一个空白页。当我从第一个开始评论第二个函数的调用时,页面正确加载。
<?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
}
}
顺便说一句,我像这样通过 volt 函数扩展程序访问 f1 函数
$compiler->addFunction('customfunc', function($resolvedArgs, $exprArgs) {
return 'Testhelper ::f1('.$resolvedArgs.')';
});
如果有人能帮助我,我将不胜感激。
谢谢大家
您正在尝试在 Volt 中静态调用 TestHelper
f1()
,而您的 class 并未将该函数公开为静态。
您可以这样更改代码:
<?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.')';
}
);