Onthink Learning Essays
------------------------------------- (コードの書き方はLonely_Xiao Xiaodai ではありません)
Onthink を使用して Web サイトを作成しましたが、まだ立ち上げられていません。機能が少し不完全で、本来の強力な拡張性をまったく発揮していません。
ただし、強力なデータ テーブル コントロールがまだ欠けているため、thinphp3.2.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 次元の
構成を読み取ることができます。 構成パラメーターは現在有効であり、データベースには書き込まれません。
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 'Role');
//禁止されたモジュールのアクセス禁止モジュール構成リスト (他のモジュールによって呼び出される、またはアクセスのために開かれないために使用される) デフォルト構成では、
は共通モジュールとランタイム モジュール (ランタイム ディレクトリ) へのアクセスを禁止します。はデフォルトのランタイム ディレクトリです)、他の
禁止アクセス モジュール リストを追加できます:
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
Setアクセスリスト
許可アクセスリストとデフォルトモジュール
'MODULE_ALLOW_LIST' => array('Home','Admin','User'),'DEFAULT_MODULE'
=> ; ,
単一モジュール設計はマルチモジュール アクセスを閉じる MULTI_MODOULE=>false
複数エントリ設計
パラメーター バインディング モジュールを受け入れる
// ホーム モジュールを現在のエントリにバインドします File $ _GET['m'] = 'Home';
define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
http:// /servername/ をバインドした後index.php/home/index/index は
http://servername/home.php/index/index (URL はホームを表示しません) =>true
モデル層 データ層、ロジック層、サービス層、およびその他のさまざまなモデル層 Model、Logic、sercive
を作成するとき、D メソッドを使用して D('User','Logic ');//UserLogic のインスタンス化 D('User ') は
UserModel をインスタンス化しています。
システムのデフォルトのビュー レイヤを変更します DEFAULT_V_LAYER=>'Mobile'; デフォルト以外のビュー レイヤ ディレクトリのテンプレートは T 関数
を使用して取得されます番号。
コントローラー層のコアコントローラーはシステム内のAppクラスで完結します
Event/UserEvent//ユーザーのイベント応答操作において、コントローラーは外部応答を担当し、イベントはイベント応答を担当します。内部応答
内部イベント応答。A('User','Event') を内部的にのみ呼び出すことができます。
CBD モデル
コア (コア) 動作 (動作) ドライバー (ドライバー) )
ドライバー
3.2 は、アーキテクチャ設計の観点からドライバー設計をさらに強化し、以前のエンジンとモード拡張を置き換え、動作設計を改善しました
この設計により、フレームワーク全体がより柔軟になり、データを書き込む必要がある関数クラス ライブラリにドライバーベースの設計アイデアが採用されているため、
新しいフレームワークは分散展開のニーズを簡単に満たすことができ、クラウドプラットフォーム対応に適しており、より簡単に実装できます。
行動
行動は比較的抽象的な概念であり、さまざまな場所で行動が発生します。
一部の動作はアプリケーションの実行前に行われ、一部はテンプレートの出力後に行われます。これらの動作はタグ
タグ (ビット) として使用され、アプリケーションの実行時にフックとしても使用されます。このタグに を追加すると、それがインターセプトされ、関連する
動作が均一に実行されます。これは、AOP プログラミングにおける「アスペクト」の概念に似ており、関連する動作を特定のタグにバインドすることは AOP に似たものになります。プログラミングのアイデア
考えます。
タグ ビット
タグ関数は、特定のタグ ビットを設定するために使用されます。複数のパラメーターを渡す必要がある場合は、
を使用してください。 , ThinkHook::listen( 'my_tag');
動作定義では、動作の呼び出しメカニズムの影響により、実行エントリメソッドの実行を定義する必要があります。呼び出しはどこに戻りますか?
動作バインディング 動作を定義した後、それを有効にするには特定のラベルに定義する必要があります。そうでない場合、動作は実行されません。 動作とタグの場所は、アプリケーション
の tags.php ファイルで定義する必要があります。
return array( 'タグ名 1'=>array('ビヘイビア名 1','ビヘイビア名 2',...), 'タグ名 '
2'=>array( ' 動作名 1', '動作名 2',...), );
バージョン 3.2.1 以降では、対応するクラス ライブラリが名前空間を使用しないように設定できます。
構成ファイル 'APP_USE_NAMESPACE' => false (システム クラスの継承および呼び出し時に引き続き必要)
バージョン 3.2 では、PHP の組み込みクラス ライブラリまたは名前空間を使用して定義されていないサードパーティ クラスをインスタンス化します。
$class = new stdClass(); $sxml = new SimpleXmlElement($xmlstr);
自動ロード (名前空間の自動ロード) Library ディレクトリの下の名前空間を自動的に識別して見つけることができます。
ライブラリ ディレクトリ内の名前空間に加えて、他の名前空間も定義できます。
autoload_namespace
クラス ライブラリ ThinkThink::addMap($map); を使用して複数のルート名前空間をマッピングすることで効率が向上します。 map=array();
任意のクラス ライブラリをインポートするには、import メソッドを使用してサードパーティのクラス ライブラリを手動でインポートします。
組み込みのキャッシュ メカニズムとライト ファイルの実行。新しいバージョンの機能: 実行時に静的エントリ ファイルを生成します。
アプリケーション モード アプリケーション モードは、自動認識領域を増やすことです
プロジェクト コンパイル アプリケーション コンパイル キャッシュ (初回実行キャッシュ) - Lite ファイルの実行 (静的エントリ)
----- - -------===========
ルート定義
URL が通常モードではありません。ルーティングを有効にするには、アプリケーション (またはモジュール) 構成でルーティングを有効にします。 file
/ / ルーティングをオンにする 'URL_ROUTER_ON' => true、3.2 ルーティングはモジュール用であるため、モジュール名をルーティングすることはできません。通常、ルーティング
の定義はモジュール構成ファイルにもあります。
ルーティング式 => ルーティング アドレスと受信パラメータ array('ルーティング式','ルーティング アドレス','受信パラメータ
数値')
ルーティング式
正規表現/^blog/ (d )$/
正規表現 blog/:id
完全一致 $
パブリックメソッド
----
Controller
操作対象のメソッドがシステム キーワードと競合するコントローラー メソッドがある場合は、サフィックス メソッド
を設定して 'ACTION_SUFFIX' => 'Action' の問題を解決できます。 // 操作メソッド サフィックス
マルチレベル コントローラーはグループ化されますコントローラー
インスタンス化されたコントローラーが内部の場合、URL アドレスの解析時に自動的にインスタンス化され、コントローラー間で呼び出される場合
使用される場合は、インスタンス化してから、ショートカット メソッド A を使用して呼び出します (場合マルチレベルなので、A の 2 番目のパラメータを使用します。
の設定およびポスト操作の前に、メソッドをインスタンス化できます (コントローラーにのみ役立ちます)
一般的なものは、_before_index pre-method_after_index post-method です。pre-post メソッドが定義されていない場合は、実際のテンプレートです
出力は、現在の操作と、前後の操作のみになる可能性があります。 -操作では通常、出力はありません。エラー操作
が正常に呼び出された場合、事後操作は行われません。
コントローラーはパラメーター ルールとアクション パラメーター バインディングもバインドできます (ルーティング関数を実装するために変数名でバインドできます)
擬似静的
URL_HTML_SUFFIX=〉'' 静的サフィックスは定数 __EXT__ に記録されます (現在のサフィックスを取得できます)
URL_DENY_SUFFIX=>アクセスを許可されていない複数のサフィックスは |
で区切ります 以下の方が優先されます上記のものより
URL case 'URL_CASE_INSENSITIVE' =>true アクセス コントローラーが大文字と小文字を区別しない場合は、大文字にします _
システムは、関連する URL アドレスを自動的に生成する U メソッドを提供します
U 類似 (リダイレクト) (URL 生成)
使用される URL モードに一致させるには、現在の URL 設定に基づいて対応する URL アドレスを動的に生成できる必要があります。
ThinkPHP は組み込みの U メソッドを提供しており、URL を動的に生成するため、移植プロセス中にプロジェクトが環境の影響を受けないようにすることができます。
U('アドレス式',['パラメータ'],['疑似静的サフィックス'],['表示ドメイン名'])
[[email protected]]?パラメータ 1=値 1&パラメータ 2=値 2...
ajax は ajaxReturn
を返します。変数配列によって返されるデータを受け入れ、JSON、JSONP、XML、および EVAL を処理できます。
に DEFAULT_AJAX_RETURN を返します。 return eval は $ data を出力できます
JSON と JSONP の間には 1 文字の違いがありますが、実際にはまったく同じではありません。JSON はデータ交換形式であるのに対し、JSONP は非公式のクロスドメイン データ インタラクション プロトコルです。 1 つは情報を記述する形式であり、もう 1 つは
で合意された情報送信方法です。
ジャンプとリダイレクト
$this->success(プロンプト情報、アドレス、秒)
----==--=-=
入力変数
I 関数を使用して取得およびフィルタリングできます
I('変数の種類.変数名',['デフォルト値'],['フィルタ方法'],['追加のデータ ソース'])
関数には DEFAULT_FILTER が付属しており、デフォルトは htmlspecialchars (変数のフィルタリング) です。
リクエスト タイプ (リクエスト タイプ) を決定します。
is_XXX カスタム AJAX の場合、バックグラウンドにそれを伝えるために隠しフィールドを追加する必要があります。それは ajax の送信です jquery
の場合は必要ありません。 VAR_AJAX_SUBMI を通じて構成可能
空のオペレーション
_empty を自動的に呼び出す (エラー ページと URL の最適化を実装)
空のコントローラー システムは、EmptyController
オペレーションをクラス ACTION_BIND_CLASS=>'true' にバインドしようとしますより詳細に分類するには、
の前処理と後処理を事前に定義する必要があります。 -=-
モデル。大文字と小文字の _Conversion
モデル クラスの直接インスタンス化は、通常、モデル名データ テーブルのプレフィックス番号
データベース接続情報を継承します。 > ネイティブ SQL コードを書きたい場合は、M() のように Instantiate empty を実行するだけです;
D (データ モデルのインスタンス化操作)
メソッドのパラメータはモデルの名前であり、
クラスが存在しない場合、D 関数はパブリック モジュールのインスタンス化を試行し、モジュール間で使用することもできます
M (単に基本的な CURD 操作を実行するだけです)
独自のビジネス ロジックをサポートしません
インスタンス化プロセス中に D メソッドと M メソッドをよく使用します。これら 2 つのメソッドの違いは、 M メソッドはモデル
をインスタンス化します。ユーザーが各データ テーブルに新しいモデルを作成する必要はありません。データ テーブルはモデル クラスを定義します。D メソッドが定義されたモデル クラスを見つけられない場合は、自動的にM
メソッド。
フィールド キャッシュには、フィールドのフィールド情報が含まれます。DB_FIELDS_CACHE を設定することでフィールドの自動キャッシュをオフにできます。
ファイル
のすべてのフィールド情報を取得します。 data table getDbFields(); field( ''/*); 呼び出されるすべてのフィールドを取得します。
(true)。
データベースに接続するときに、table() を使用します。接続にラベルを追加できます
システムのデフォルト ルール、モデルを使用する必要があります 書き込み操作の実行 クエリ読み取り操作
連続操作 (チェーン操作)
データ メソッドが記述されている場所と組み合わせて使用できます主キー オブジェクトは、数値
グループ、オブジェクト、文字列にすることができます。読み取り操作が可能です。
フィールド除外フィールドは user_id と
content 以外のフィールドです。 書き込み (セキュリティ制御) に使用され、他の書き込みは許可されません $model->field('name')-
>create(); は、フォーム内の有効なフィールドが名前フィールドのみであることを意味します。 、ユーザーがブラウザ
の送信フィールドを変更または追加するためにどのような手段を使用しても、直接ブロックされます。他のすべてのフィールドはユーザーの送信によって決定される必要がないため、
オートコンプリート関数を通じて書き込む追加フィールドを定義できます。
filtert (フィールド内容のフィルタリング) は I の判断に似ています $User->data($data)->filter
('strip_tags')->add(); HTML タグ (コールバック型をサポートする関数は、関数またはクロージャ
定義)
を持つメソッドは、グループ メソッドと連携して、グループ化された結果から再度クエリを実行します。
キャッシュ s
コメント コメント
Create メソッドによって作成されたデータ オブジェクトはメモリに保存され、add
または save メソッドが使用されるまで実際にはデータベースに書き込まれません。データベース。追加または保存後にデータベースに書き込まれるため、変更が行われる前に
作成オブジェクトを変更できます。
---
find (フィールドの読み取り) select (フィールドセットの読み取り) getField (フィールド値の読み取り) [Number update setInc setDec]
delete() [seveと同様に条件が渡されない場合は削除されません]
フォームマッピング取得時データの場合、自動的に設定を処理して 'READ_DATA_MAP'=>true
parseFieldsMap を使用して形式を変換することもできます
クエリ メソッド
配列 '_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