我有一个Joomla助手类,我正在使用我想要调用的方法进行模块开发:
class modCamcloudReferralHelper
{
/*
* Sanitize email form
*/
public function isInjected($str) {
$inject = "/(\r|\t|%0A|%0D|%08|%09)+/i";
return (preg_match($inject, $str) > 0);
}
public static function sendEmail() {
$jinput = JFactory::getApplication()->input;
$email = $jinput->post->get('email', '', 'STRING');
//check email is fine
if (isInjected($email)){ //never get into this code and it causes some sort of failure
echo "blah";
}
}
}
简单,对吧?但是这段代码只给了我一个空白页面,我没有看到任何错误......任何地方。我可以将此代码直接放入我的sendEmail
函数中,它可以正常工作:
$inject = "/(\r|\t|%0A|%0D|%08|%09)+/i";
if (preg_match($inject, $email) > 0){
echo "This works";
}
我之前构建的Joomla组件遇到了这个问题。出于某种原因,在同一个类中调用此函数不起作用。它一定是Joomla的东西......或者我疯了。有什么想法吗?
答案 0 :(得分:0)
您应该使用对其容器的引用来调用该方法,即使它是本地的。
所以这里正确的语法是:
if (self::isInjected($email))
来自另一个班级:
modCamcloudReferralHelper::isInjected(
这对帮助者有好处:只需确保将要调用的方法声明为静态
public static function isInjected($str) {
但是,如果您在实例化的类(视图,模板,模型)上调用方法,则应使用
$this->method()