2013-02-26 66 views
0

我有我使用模块的发展提供了方法,我试图调用一个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的东西......否则我会疯了。有任何想法吗?

回答

0

你应该调用引用它的容器的方法,即使它是本地的。

所以这里的正确的语法是:

if (self::isInjected($email)) 
从另一个类的

modCamcloudReferralHelper::isInjected(

这是很好的帮手:只要确保你宣布你正在调用静态

方法
public static function isInjected($str) { 

如果你正在调用一个实例化类的方法(视图,模板,模型,你应该使用

$this->method() 
+1

他需要能够做到这一点之前声明'isInjected'为静态,你可能想的是添加到您的答案:) – 2013-02-26 22:21:50

+0

谢谢你,更新了答案 – 2013-02-27 23:13:54

相关问题