ホームページ  >  記事  >  バックエンド開発  >  Thinkphp 2 入門 (46)

Thinkphp 2 入門 (46)

WBOY
WBOYオリジナル
2016-08-08 09:22:571061ブラウズ

【演算処理なし】

次の図を見てください:

実際の状況: ユーザーコントローラーには hello() メソッドがありません

オブジェクトがこのクラスに存在しないメソッドにアクセスすると、 " マジックメソッド __call()"

ユーザーは存在しない操作にアクセスします - "解決策: 各コントローラーが処理する _empty() メソッドを定義します

2 番目の解決策: 空の操作を定義します

【空モジュール処理】

クラスを使用していますが、このクラスはまだインクルードされていません。

自動ロードメカニズムを通じて __autoload() を処理できます。自動ロードメカニズムがこのクラスを見つけられない場合、エラーが報告されます。

つまり、空のモジュールをリクエストします

解決策 1: 空のコントローラー、空のモジュールを定義します

解決策 2:

【アプリケーションに関数ライブラリ ファイルを追加する】

Common フォルダー内、関数ライブラリファイルが配置される場所です

[モジュールグループ化]

1..グループ化設定のためのコントローラー2. 3.

設定変数はグループ化する必要がある

4.

config.phpを設定する

【操作前、操作後】コントローラー内のメソッドが呼び出されたとき、呼び出しの前後に、プレオペレーションとポストオペレーションと呼ばれる追加の作業を行うことができます

この URL をリクエストする場合: http://url/index.php/Admin/Goods/zhanshi、メソッドが存在する場合、このアクションはどこで発生しますか? App.class.php の exec() メソッド内の事前操作は、zhanshi() が実行されるときに最初に実行できます。事後操作は、zhanshi() の後に実行できます。が実行されます

クラスには多くのメソッドがあり、そのすべてで前操作と後操作が必要です。

解決策:

[クロスモジュール呼び出し]

存在しないクラスのインスタンス化は、__autoload() メカニズムを通じて自動的にロードされます。

tpフレームワークの__autoload()はどこにありますか? Think.class.php

で、A()メソッドを通じてコン​​トローラーオブジェクトをインスタンス化します

A('Module Controller') 例: A('Goods')

A('Group/Controller') 例: A ('home/Ucenter');

A('project://group/controller') 例: A('shop://home/Ucenter');

A( ) メソッド () メソッド。このメソッドは、対応するコントローラーを取得し、それを導入するように要求するのに役立ちます。ちなみに、A()メソッドは、コントローラーの導入、インスタンス化されたオブジェクト、メソッド呼び出しを継承したオブジェクト

R("project://group/controller/operation")メソッド

を直接新規インスタンス化します。

R('モジュールコントローラー/操作') 例: A('グッズ')

R('グループ/コントローラー/操作') 例: A('home/Ucenter/members');

R( 'Project://group/controller/operation') 例: A('shop://home/Ucenter/members');

R() メソッドで A() メソッドを呼び出します

A で呼び出します()メソッド import()メソッド

A()メソッドを使用します

R()メソッドを使用します

上記では、関連コンテンツを含む「Thinkphp 入門パート 2 (46)」を紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。