------------------------------------------------- -(コードは孤独ではない_Xiao Xiaodaiを書く)
Onthink を使用して Web サイトを作成しましたが、まだリリースされていません。機能が不十分で、さまざまな点で不十分です。
ただし、強力なデータ テーブル コントロールがまだ欠けているため、thinphp3.2.2 ベースの開発の世界に入ります。 。 。
1 日目: マニュアルの序文、基本、構成、アーキテクチャ、およびルーティングを読み終えます。
2日目にコントローラーモデルの読み込みを完了 付録の読み込みについて
以下は朗読記録です
************************************************ *****
use は、直接参照のために導入される名前空間を示します
関数の命名方法では、小文字とアンダースコアが使用されます
メソッドの命名方法では、小文字とアンダースコアが使用されます アンダースコアは (一般的なプライベート メソッド) を表します
二重アンダースコアで始まる関数またはメソッドマジック メソッド __call
I 関数を使用して入力変数を取得する習慣を身につけてください。
環境を更新または変更した後に問題が発生した場合、最初の問題はランタイム ディレクトリをクリアすることです。
従来の構成アプリケーション構成モードの構成デバッグ構成ステータス。構成モジュールの構成
従来の構成 ThinkPHP/Conf/convention.php アプリケーション構成は、従来の構成をベースにした拡張です
Application/Common/Conf/config.php は、すべてのモジュールを呼び出す前にロードされる共通の構成ファイルです
オプションモード設定は、アプリケーション設定フォルダー内の新しいものです。このモードでのみ実行されるファイル config_application name.php を追加します。デバッグ モードがオンになっている場合、ThinkPHP/Conf/debug.php とアプリケーション デバッグ設定ファイルがアプリケーションに追加されます。ステータス設定は手動で分離されます。 モジュール設定 アプリケーション/現在のモジュール名 /Conf/config.php
設定ファイルを読み込みます
設定ファイルを定義した後、すべてシステムが提供する C メソッドを使用します (Config を使用できます)読み取りまたは設定するには
設定パラメータ名には「.」と特殊文字を含めることはできませんが、文字、数字、アンダースコアは C メソッドで 2 次元で読み取ることができます
設定設定パラメータはグローバルに有効です c を通じて設定されたパラメータ値は次のとおりです現在有効であり、データベースには書き込まれません
URL 詳細 pathinfo モードの説明
serverName/index.php (または他のアプリケーション エントリ ファイル) / module/controller/operation/[パラメータ名 / パラメータ値...]
パブリック設定ファイル config.php パブリック関数ファイル function.php は common_path にパスをロードできます
エントリーファイルに設定します。定義されている場合、以下のアプリケーションをロードする必要はありません。 3.2.2 エントリーファイルに記述されたモジュールとコントローラー。デフォルトで自動生成できます。 define('BIND_MODULE','xx') さらにコントローラーを生成したい場合 BUILD_CONTROLLER_LIST 定数
// Admin モジュールを現在のエントリ ファイルにバインドします
define('BIND_MODULE','Admin');
define(' BUILD_CONTROLLER_LIST', 'Index,User,Menu');
ThinkBulid クラスのメソッドを手動で呼び出して、モデル クラス ThinkBuild::buildModel List (他のモジュールによって呼び出されるか、アクセスが公開されていないために使用される) を生成します。デフォルト設定
ではアクセスが禁止されています。共通モジュールとランタイム モジュール (ランタイム ディレクトリはデフォルトのランタイム ディレクトリです) に、他の
アクセス禁止モジュールのリストを追加できます:
'MODULE_DENY_LIST' => 'User'),'DEFAULT_MODULE'
=> Home',
単一モジュール設計は、マルチモジュール アクセスをオフにする MULTI_MODOULE=>false
マルチエントリ設計
パラメータ バインディング モジュールを受け入れる
// ホーム モジュールを現在のエントリ ファイルにバインド $_GET['m'] = 'home'; define( 'app_path'。/application/')レイヤー、ロジック層、サービス層、その他のさまざまなモデル層を作成する場合、D メソッドを使用して D('User','Logic');//UserLogic D をインスタンス化すると非常に便利です。 ('User ') は
UserModel をインスタンス化します。
システムのデフォルト ビュー レイヤ DEFAULT_V_LAYER=>'Mobile' を変更します。T 関数
number を使用して、デフォルト以外のビュー レイヤ ディレクトリのテンプレートを取得します。
コントローラー層のコアコントローラーはシステム内のAppクラスで完成します
Event/UserEvent//ユーザーイベントの応答操作に使用されます。 Eventは内部のイベント応答を担当し、のみ実行できます。 A('User','Event') を内部的に呼び出します。
CBD モデル
Core(コア)+Behavior(動作)+Driver(ドライバー)
Driver(ドライバー)
3.2 はアーキテクチャ設計におけるドライバーをさらに強化しました。以前のエンジンとモード拡張を置き換え、動作設計を改善しました
この設計により、フレームワーク全体がより柔軟になり、データを書き込む必要がある機能ライブラリにドライバーベースの設計アイデアが採用されているため、新しいフレームワークは分散展開のニーズを容易に満たし、クラウド プラットフォームをより多く実装できます。単に。
行動
行動は比較的抽象的な概念であり、行動はさまざまな場所で発生します。
一部の動作はアプリケーションが実行される前に行われ、一部はテンプレートが出力された後に行われます。これらの動作の位置は、アプリケーションがこのタグに対して実行されるときにフックとしても使用できます。それをインターセプトして、関連する動作を統一的に実行することは、AOP プログラミングにおける「アスペクト」の概念に似ており、関連する動作を特定のタグにバインドすることが AOP 風のプログラミングのアイデアになります。
タグ ビット
タグ関数は、特定のタグ ビットを設定するために使用されます。複数のパラメーターを渡す必要がある場合は、
配列を使用してください。 ThinkHook::listen('my_tag) ');
動作の定義 動作の呼び出しメカニズムの影響により、呼び出しはどこに返されるのか? run を定義する必要があります。
動作バインディング 動作を定義した後、それを有効にするには特定のラベルに定義する必要があります。そうでない場合、動作は実行されません。 動作とタグの場所は、アプリケーションの動作定義ファイルの tags.php ファイルで定義する必要があります。戻り配列 動作名 2',...), );
3.2.1 以降では、対応するクラス ライブラリが名前空間を使用しないように設定できます。
設定ファイル 'APP_USE_NAMESPACE' => false (システム クラスの継承および呼び出し時に引き続き必要)
バージョン 3.2 では、名前空間を使用して定義されていない PHP の組み込みクラス ライブラリまたはサードパーティ クラスをインスタンス化します。
$class = new stdClass(); $sxml = new SimpleXmlElement($xmlstr);
自動読み込み (名前空間の自動読み込み) Library ディレクトリ下の名前空間を自動的に識別して見つけることができます。
ライブラリ ディレクトリ内の名前空間に加えて、他の名前空間も定義できます
autoload_namespace
複数のルート名前空間をマッピングするクラス ライブラリの効率を向上させる ThinkThink::addMap($map);
手動サードパーティ クラス ライブラリのインポート メソッド import は、任意のクラス ライブラリをインポートします。
内蔵キャッシュメカニズムと軽量ファイルの実行 新バージョンの機能 実行時に静的エントリファイルを生成します。
アプリケーションモード 自動認識領域を追加するアプリケーションモードです
プロジェクトコンパイルアプリケーションコンパイルキャッシュ(初回実行用キャッシュ) - Liteファイルを実行(静的エントリ)
-------------=== ========
ルート定義
URL は通常モードではありません。ルーティングを有効にするには、アプリケーション (またはモジュール) 構成ファイルでルーティングを有効にすることができます
// ルーティングを有効にする 'URL_ROUTER_ON' => true、3.2 ルーティングはモジュール用であるため、モジュール名をルーティングすることはできず、ルーティング定義
も通常はモジュール構成ファイル内にあります。
ルート式 => ルーティング アドレスと受信パラメータ Array('ルーティング式','ルーティング アドレス','受信パラメータ
番号')
ルーティング式
正規表現/^blog/(d+)$ /
正規表現 blog/ :id
完全一致 $
パブリック メソッド
----------
Controller
操作対象のメソッドがシステムのキーワードと競合するコントローラー メソッドの場合、サフィックスの設定方法
'ACTION_SUFFIX を解決する'=> 'Action', // 操作メソッドのサフィックス
マルチレベルコントローラーはコントローラーをグループ化します
インスタンス化されたコントローラーが内部の場合は、URL アドレスを使用して解決されます。コントローラー間で呼び出される場合、インスタンス化されてから、ショートカット メソッド A を使用して呼び出されます (マルチレベルの場合は、A の 2 番目のパラメーターを使用します)。インスタンスのインスタンス化の際にそのメソッドを使用できます。
-operations (コントローラーにのみ役立ちます)
一般的なものは、_before_index pre-method_after_index post-method です。 pre-post メソッドが定義されていない場合、実際にはテンプレート出力があります
現在の Pre-operation と post-operation のみである可能性があります。通常、出力はありません。呼び出しエラー操作が成功した場合、事後操作は行われません。
コントローラーはパラメーター ルールとアクション パラメーター バインディングもバインドできます (ルーティング関数を実装するために変数名でバインドできます)
擬似静的
URL_HTML_SUFFIX=〉'' 静的サフィックスは定数 __EXT__ に記録されます (現在のサフィックスを取得できます)
URL_DENY_SUFFIX=〉 アクセスが許可されていない複数のサフィックスは | で区切られます
上記より以下の優先度が高くなります
URL case 'URL_CASE_INSENSITIVE' =>true アクセス コントローラーが大文字と小文字を区別しない場合は、大文字にします _
システムは、関連する URL アドレスを自動的に生成する U メソッドを提供します
U 類似 (リダイレクト) (URL 生成)
使用されている In URL モードと一致させるには、現在の URL 設定に基づいて対応する URL アドレスを動的に生成できる必要があります。そのために、
ThinkPHP は URL を動的に生成するための組み込みの U メソッドを提供します。移植プロセス中にプロジェクトが環境の影響を受けないようにすることができます。
U('アドレス式',['パラメータ'],['疑似静的サフィックス'],['表示ドメイン名'])
[モジュール/コントローラ/操作#アンカー@ドメイン名]?パラメータ 1=値 1&パラメータ 2=値 2...
ajax は ajaxReturn を返します
変数配列によって返されるデータは受け入れられ、JSON、JSONP、XML、および EVAL で処理できます。 DEFAULT_AJAX_RETURN eval は $data データを出力できます。
JSON と JSONP は 1 文字異なるだけですが、実際にはまったく同じではありません。JSON はデータ交換形式であるのに対し、JSONP は非公式のクロスドメイン データ交換プロトコルです。 1 つは情報を記述する形式であり、もう 1 つは情報を送信するための
合意された方法です。
ジャンプとリダイレクト
$this->success(プロンプト情報、アドレス、秒)
----==--=-=
入力変数
I 関数を使用して変数を取得およびフィルタリングできます
I( '変数の種類。変数名'、['デフォルト値']、['フィルターメソッド']、['追加のデータソース'])
I 関数には DEFAULT_FILTER が付属しており、デフォルトは htmlspecialchars (変数のフィルター処理) です
決定リクエストタイプ (リクエストタイプ)
is_XXX カスタム AJAX の場合は、背景に ajax によって送信されたことを伝えるための隠しフィールドを追加する必要があります。jquery の場合は必要ありません。 VAR_AJAX_SUBMI を通じて設定できます
空の操作
_empty を自動的に呼び出します (エラー ページと一部の URL 最適化を実装します)
空のコントローラー システムは EmptyController を決定しようとします
操作はクラスにバインドされます ACTION_BIND_CLASS=>'true' の詳細は、省略不可
Before 後置演算を事前に定義する必要がある
-=-=-=-=-=-=-=-=-=-=-=-
モデルケースと変換
モデルクラスの直接インスタンス化通常、モデル クラス モデルを継承します。一般に、モデル名、データ テーブル プレフィックス番号、
データベース接続情報、
の 3 つの値があります。ネイティブ SQL コードを記述したい場合は、空の M();
D (データ モデルのインスタンス化操作)
メソッド パラメーターはモデルの名前であり、モデル クラスのケース定義と一致します。
クラスが存在しない場合、D 関数はパブリック モジュールの下にあるクラスをインスタンス化しようとします。 、モジュール間で使用することもできます
M (データ テーブルの基本的な CURD 操作のみ) は、特定のモデル クラスをロードする必要がないため、パフォーマンスが高くなります
独自のビジネス ロジックをサポートしません
インスタンス化プロセス中に、 D メソッドと M メソッドの違いは、M メソッドのインスタンス化モデルでは、ユーザーが各データ テーブルのモデル クラスを定義する必要がないことです。D メソッドで定義されたモデル クラスが見つからない場合、 M メソッドが自動的に使用されます。
フィールド キャッシュには、フィールドのフィールド情報が含まれます。DB_FIELDS_CACHE を設定することで、このフィールドをプロジェクト設定ファイルに追加します。 getDbFields() フィールドのすべてのフィールド情報を取得します。 (''/*); 必要な [すべてのフィールドを呼び出す] フィールドを取得します
(true)。
データ テーブルを切り替えるには table() を使用します。
システムのデフォルト ルールモデルを使用する必要があります 実行 書き込み操作 クエリ 読み取り操作
連続操作 (チェーン操作)
where は where と組み合わせて使用できます
データメソッドはデータベースに書き込むためのものであり、データベースがあるかどうかを判断するための更新 (保存) にも使用できます。主キー オブジェクトは、数値、グループ、オブジェクト、または文字列です。読み取り操作が可能です。
フィールドはフィールドを取得します。フィールド除外フィールドは user_id と
content 以外のフィールドです。 書き込み (セキュリティ制御) に使用され、他の書き込みは許可されません $model->field('name')-
>create(); は、フォーム内の有効なフィールドが名前フィールドのみであることを意味します。ユーザーがブラウザ
の送信フィールドを変更または追加するメソッドは直接ブロックされます。他のすべてのフィールドはユーザーの送信によって決定される必要がないため、
オートコンプリート関数を通じて書き込む追加フィールドを定義できます。
filtert (フィールド内容のフィルタリング) は I の判断に似ています $User->data($data)->filter
('strip_tags')->add(); HTML タグをフィルタリングします (コールバック タイプをサポートします)。 ) 関数は関数またはクロージャーにすることができます
定義)
Have メソッドはグループメソッドと連携して、グループ化された結果から再度クエリを実行します。
使用保存方法。追加または保存後にデータベースに書き込まれるため、変更が生じる前に作成オブジェクトを変更できます。
----
find (フィールドの読み取り) select (フィールド セットの読み取り) getField (フィールド値の読み取り)。 ) [Number update setInc setDec]
delete() [seveと同様に条件を渡さない場合は削除されません]
フォームマッピングデータ取得時に自動処理設定がONになります。 true
フォーマット変換に parseFieldsMap を使用することもできます
Query メソッド
Array'_logic'='OR' オブジェクト モードを使用して stdClass をクエリします
$map['b'] =array('notlike',array('%thinkphp% ' ,'%tp'),'AND');
exp 式クエリ (exp クエリ条件は文字列として扱われません) 後続のすべてのクエリ条件では、関数やフィールド名の使用を含め、
sql でサポートされている任意の構文を使用できます。クエリ式はクエリ条件だけでなく数値にも使用できます。
更新済み。
$data['score'] = array('exp','score+1');// ユーザーのポイントに 1 を加算します
$User->where('id=5')->save($ data ); // 条件に従って変更したデータを保存
多言語パッケージのサポート L
*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* _12_1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
マルチレベルコントローラー
インスタンス化コントローラー
個別
ORM クラスレコードへのテーブルマッピング
オブジェクトへのマッピング
ARモードActiveRecord 簡単なコマンド
プレフィックスサポートによるローカルセッション管理を有効にする方法
*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* _12_1
http://www.bkjia.com/PHPjc/920432.html
www.bkjia.com