ホームページ  >  記事  >  バックエンド開発  >  thinkphp URL のアクションは定義されていませんが、テンプレートには引き続きアクセスできます。

thinkphp URL のアクションは定義されていませんが、テンプレートには引き続きアクセスできます。

WBOY
WBOYオリジナル
2016-06-13 12:16:421003ブラウズ

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

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

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

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

thinkphp に出会ったばかりですが、理由がわかりません。助けてください。
-----解決策のアイデア---------- ---------- --
設定でルーティング機能が有効になっているかどうかを確認してください。これが現在発生している問題であるかどうかはわかりません。 。
------ソリューションのアイデア----------------------

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

-----ソリューションのアイデア----------------------
ユーザー定義のアクションを入力する前に、メソッドが存在するかどうかが自動的に検出されます
存在しない場合は、テンプレートを直接読み取ります。テンプレートがない場合は、メソッドが存在しないというエラーが報告されます
- ----解決策のアイデア----------
引用:
Quote: Quote:
ユーザー定義のアクションを入力する前に、メソッドが存在するかどうかが自動的に検出されます
存在しない場合は、テンプレートを直接読み込んでレポートします。テンプレートがない場合、メソッドが存在しないなどのエラーが表示されます

これを説明している thinkphp の公式 Web サイトへのリンクを提供していただけますか。

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

-----解決策----------------------参照ThinkPHP/Library/Think/Controller.class.php __call メソッド
これはフォールト トレラントなテクノロジであり、ユーザー マニュアルで説明する必要はありません
    /**<br />     * 魔术方法 有不存在的操作的时候执行<br />     * @access public<br />     * @param string $method 方法名<br />     * @param array $args 参数<br />     * @return mixed<br />     */<br />    public function __call($method,$args) {<br />        if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) {<br />            if(method_exists($this,'_empty')) {<br />                // 如果定义了_empty操作 则调用<br />                $this->_empty($method,$args);<br />            }elseif(file_exists_case($this->view->parseTemplate())){<br />                // 检查是否存在默认模版 如果有直接输出模版<br />                $this->display();<br />            }else{<br />                E(L('_ERROR_ACTION_').':'.ACTION_NAME);<br />            }<br />        }else{<br />            E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_'));<br />            return;<br />        }<br />    }<br />
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。