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(

これはヘルパーに適しています: 呼び出しているメソッドを static として宣言していることを確認してください。

public static function isInjected($str) {

ただし、インスタンス化されたクラス (ビュー、テンプレート、モデル) でメソッドを呼び出す場合は、

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