调用类中的一个函数与一个Joomla模块
问题描述:
我有我使用模块的发展提供了方法,我试图调用一个Joomla辅助类:调用类中的一个函数与一个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的东西......否则我会疯了。有任何想法吗?
答
你应该调用引用它的容器的方法,即使它是本地的。
所以这里的正确的语法是:
if (self::isInjected($email))
从另一个类的
:
modCamcloudReferralHelper::isInjected(
这是很好的帮手:只要确保你宣布你正在调用静态
方法public static function isInjected($str) {
如果你正在调用一个实例化类的方法(视图,模板,模型,你应该使用
$this->method()
他需要能够做到这一点之前声明'isInjected'为静态,你可能想的是添加到您的答案:) – 2013-02-26 22:21:50
谢谢你,更新了答案 – 2013-02-27 23:13:54