0

我有一个 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 的事……否则我要疯了。有任何想法吗?

4

1 回答 1

0

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

所以这里正确的语法是:

if (self::isInjected($email))

来自另一个班级:

modCamcloudReferralHelper::isInjected(

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

public static function isInjected($str) {

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

$this->method()
于 2013-02-26T21:45:28.933 回答