使用Joomla模块调用类中的函数

时间:2013-02-26 21:22:41

标签: joomla joomla2.5

我有一个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的东西......或者我疯了。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您应该使用对其容器的引用来调用该方法,即使它是本地的。

所以这里正确的语法是:

if (self::isInjected($email))

来自另一个班级:

modCamcloudReferralHelper::isInjected(

这对帮助者有好处:只需确保将要调用的方法声明为静态

public static function isInjected($str) {

但是,如果您在实例化的类(视图,模板,模型)上调用方法,则应使用

$this->method()