ホームページ > バックエンド開発 > PHPチュートリアル > thinkphp URL 内のアクションが定義されていない場合でも、テンプレートにアクセスできますか?

thinkphp URL 内のアクションが定義されていない場合でも、テンプレートにアクセスできますか?

WBOY
リリース: 2016-06-23 13:38:01
オリジナル
1128 人が閲覧しました

thinkphp URL 内のアクションが定義されていない場合でも、テンプレートにアクセスできますか?

最近 thinkphp フレームワークに触り始めたのですが、同社のソース コードを見たところ、URL 内のアクションに対応する実装メソッドがクラス内にないことがわかりました。

thinkphp には no-ops モジュールと空のモジュールがありますが、私は当初それらが no-ops によって実装されていると考えていました。

最終的な確認結果: アクションに対応するテンプレートが、モジュールをまったく経由せずに直接表示されます。

thinkphp にアクセスしたばかりですが、理由がわかりません。助けてください。


ディスカッションへの返信 (解決策)

ルーティング機能が設定で有効になっているかどうかを確認してください。アドレスを偽造する可能性があります。これが現在発生している問題であるかどうかはわかりません。

ルーティング機能が設定で有効になっているかどうかを確認してください。これが現在発生している問題であるかどうかはわかりません。

ルーティング機能が設定で有効になっているかどうかを確認してください。これが現在発生している問題であるかどうかはわかりません。

ルーティングルールもありません。インターネットで調べたところ、テンプレートが静的であればアクションをクラスで定義する必要がないという人もいましたが、理由はわかりません
ユーザー定義のアクションを入力する前に、そのアクションが静的であるかどうかを自動的に検出します。メソッドが存在する場合

テンプレートが存在しない場合は、テンプレートを直接読み取ります。

ユーザー定義のアクションを入力する前に、メソッドが存在するかどうかを自動的に検出します。メソッドが存在する場合は、テンプレートを直接読み込んで接続してください。


ご説明いただきありがとうございます。これを説明する公式 thinkphp Web サイトへのリンクはありますか?

ユーザー定義アクションを入力する前に、メソッドが存在するかどうかを自動的に検出します

存在しない場合は、テンプレートを直接読み取ります テンプレートが存在しない場合は、メソッドが存在しないなどのエラーが報告されます

説明ありがとうございます。これを説明している thinkphp 公式 Web サイトへのリンクを提供してもらえますか?
http://document.thinkphp.cn/manual_3_2.html#route


ユーザー定義のアクションを入力する前に、このメソッドが存在するかどうかが自動的に検出されます

存在しない場合は、テンプレートを直接読み取るだけです。テンプレート そうでない場合は、メソッドが存在しないというエラーが報告されます

ご説明ありがとうございます。これを説明している thinkphp の公式 Web サイトへのリンクを提供していただけますか。
http://document.thinkphp.cn/manual_3_2.html#route
兄弟、あなたが私にくれたリンクにはこの兄弟 (wander_wind) からの説明がないようです

ユーザーを入力する前に -定義されたアクションは、メソッドが存在するかどうかを自動的に検出します。存在しない場合は、テンプレートを直接読み取るだけです。



ご説明ありがとうございます。これを説明している公式 thinkphp Web サイトへのリンクを教えてください。



これは…公式をよく読んでいませんが、そのパフォーマンスに基づいて、原理は完全に推測できます 興味がある場合は、tp のソースコードを完全に読むことができます

ThinkPHP/Library を参照してください。 /Think/Controller.class.php __call メソッド
    /**     * 魔术方法 有不存在的操作的时候执行     * @access public     * @param string $method 方法名     * @param array $args 参数     * @return mixed     */    public function __call($method,$args) {        if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) {            if(method_exists($this,'_empty')) {                // 如果定义了_empty操作 则调用                $this->_empty($method,$args);            }elseif(file_exists_case($this->view->parseTemplate())){                // 检查是否存在默认模版 如果有直接输出模版                $this->display();            }else{                E(L('_ERROR_ACTION_').':'.ACTION_NAME);            }        }else{            E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_'));            return;        }    }
ログイン後にコピー
ログイン後にコピー
これはフォールト トレラントなテクノロジであり、ユーザー マニュアルで説明する必要はありません

ThinkPHP/Library/Think/Controller.class.php を参照してください __call メソッド

    /**     * 魔术方法 有不存在的操作的时候执行     * @access public     * @param string $method 方法名     * @param array $args 参数     * @return mixed     */    public function __call($method,$args) {        if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) {            if(method_exists($this,'_empty')) {                // 如果定义了_empty操作 则调用                $this->_empty($method,$args);            }elseif(file_exists_case($this->view->parseTemplate())){                // 检查是否存在默认模版 如果有直接输出模版                $this->display();            }else{                E(L('_ERROR_ACTION_').':'.ACTION_NAME);            }        }else{            E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_'));            return;        }    }
ログイン後にコピー
ログイン後にコピー
これは、フォールトトレラント技術なので、ユーザーマニュアルで説明する必要はありません

モデレーターありがとうございます

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート