------------------------------------------ (コードを書くのは孤独ではない_Xiao Xiaodai )
Onthink を使用して Web サイトを作成しました。まだリリースされていませんが、必要なほど強力で拡張性がなく、さまざまなところが少し不自由です。
ただし、強力なデータ テーブル コントロールがまだ欠けているため、thinphp3.2.2 ベースの開発の世界に入ります。 。 。
1 日目: マニュアルの序文、基本、構成、アーキテクチャ、およびルーティングを読み終えます。
2日目にコントローラーモデルの読み込みを完了 付録の読み込みについて
以下は朗読記録です
************************************************ *****
use は、直接参照のために導入される名前空間を示します
関数の命名方法は小文字とアンダースコアを使用します
メソッドの命名方法は小文字とアンダースコアを使用します アンダースコアは(一般的なプライベートメソッド)を表します
double で始まる関数またはメソッドアンダースコア 魔法のメソッドとして __call
I 関数を使用して入力変数を取得する習慣を身につけてください。
環境を更新または変更した後に発生する最初の問題は、ランタイム ディレクトリをクリアすることです。
従来の構成 アプリケーション構成モードの構成 デバッグ構成ステータスの構成モジュール構成
従来の構成 ThinkPHP/Conf/convention.php アプリケーション構成は、従来の構成をベースにした拡張です
Application/Common/Conf/config.php は、すべてのモジュールを呼び出す前にロードされる共通の構成ファイルです
オプションのモード構成は次のとおりですアプリケーション構成フォルダーに追加 このモードの実行時にのみ実行されるファイル config_アプリケーション名.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 を生成します
('Admin','Role')
//禁止されたアクセス モジュールの構成 禁止されたアクセス モジュールのリスト ( に使用されます)他のモジュールから呼び出されるか、アクセスできない)、デフォルト設定
では共通モジュールとランタイム モジュールへのアクセスが禁止されています (ランタイム ディレクトリはデフォルトのランタイム ディレクトリです)。他の
アクセス禁止モジュールのリストを追加できます:
'MODULE_DENY_LIST' = > array('Common','Runtime','Api'),
アクセスリストを設定
許可アクセスリストとデフォルトモジュール
'MODULE_ALLOW_LIST' => array('Home','Admin','User') , 'default_module'シングルモジュール設計は、マルチモジュールアクセスmulti_modoule => 'm'] = 'home'をオフにすることです。 '; http://servername/index.php/home/index/index/endなどをバインドした後。 ('User','Logic');//instantiate UserLogic D('User') がインスタンス化されます
UserModel.
システムのデフォルトのビュー レイヤを変更します DEFAULT_V_LAYER=>'Mobile'; デフォルト以外のテンプレートを取得するには T 関数を使用しますレイヤディレクトリを表示します。
コントローラー層のコアコントローラーはシステム内のAppクラスで完成します
Event/UserEvent//ユーザーイベントの応答操作に使用されます。 Eventは内部のイベント応答を担当し、のみ実行できます。内部呼び出しで使用されます A('User','Event');
CBD モデル
Core(core)+Behavior(behavior)+Driver(driver)
Driver(driver)
3.2 は、アーキテクチャ上のドライバー設計をさらに強化しましたデザイン、以前のエンジンとモードの拡張機能を置き換え、動作デザインを改善しました
この設計により、フレームワーク全体がより柔軟になり、データを書き込む必要がある機能クラス ライブラリにドライバー指向の設計思想が採用されているため、新しいフレームワークは分散展開のニーズを簡単に満たすことができ、クラウド プラットフォームのサポートも容易になります。実装する。
行動
行動は比較的抽象的な概念であり、行動はさまざまな場所で発生します。
一部の動作はアプリケーションが実行される前に行われ、一部はテンプレートが出力された後に行われます。これらの動作の位置は、アプリケーションがこのタグに対して実行されるときにフックとしても使用できます。このようにして、AOP プログラミングの「アスペクト」の概念と同様に、関連する動作が均一に実行され、関連する動作を特定のタグにバインドすることが AOP のようなプログラミングのアイデアになります。
タグ ビット
タグ関数は、特定のタグ ビットを設定するために使用されます。複数のパラメーターを渡す必要がある場合は、配列を使用してください。 ;
動作の定義が必要です。動作の呼び出しメカニズムの影響により、呼び出しがどこに返されるかを定義します。
動作バインディング 動作を定義した後、それを有効にするには特定のラベルに定義する必要があります。そうでない場合、動作は実行されません。 動作とタグの場所は、アプリケーションの動作定義ファイルの tags.php ファイルで定義する必要があります。
return array( 'タグ名1'=>array('動作名1',''動作名2',...), 'タグ名return array(名前 2',...), );
バージョン 3.2.1 以降では、対応するクラス ライブラリが名前空間を使用しないように設定できます。
設定ファイル 'APP_USE_NAMESPACE' => false (システム クラスの継承および呼び出し時に引き続き必要)
バージョン 3.2 では、名前空間を使用して定義されていない PHP の組み込みクラス ライブラリまたはサードパーティ クラスをインスタンス化します。
$class = new stdClass(); $sxml = new SimpleXmlElement($xmlstr);
自動読み込み (名前空間の自動読み込み) Library ディレクトリ下の名前空間を自動的に識別して見つけることができます。
ライブラリ ディレクトリ内の名前空間に加えて、他の名前空間も定義できます
autoload_namespace
複数のルート名前空間をマッピングするクラス ライブラリの効率を向上させる ThinkThink::addMap($map);
手動 3 番目- party class library import import メソッドは、任意のクラス ライブラリをインポートします。
内蔵キャッシュメカニズムと軽量ファイルの実行 新バージョンの機能 実行時に静的エントリファイルを生成します。
アプリケーションモード 自動認識領域を追加するアプリケーションモードです
プロジェクトコンパイル アプリケーションコンパイルキャッシュ(初回実行用キャッシュ) - Liteファイル実行(静的エントリ)
-------------===== ======
ルート定義
URL が通常モードではありません。ルーティングを有効にするには、アプリケーション (またはモジュール) 構成ファイルでルーティングを有効にできます
// ルーティングを有効にする 'URL_ROUTER_ON' => true、3.2 ルーティングが対象です。モジュールなので、モジュール名をルーティングすることはできません。通常、ルーティングの定義はモジュール構成ファイルにあります。
ルート式 => ルーティング アドレスと受信パラメータ Array('ルーティング式', 'ルーティング アドレス', '受信パラメータ')
ルーティング式
正規表現/^blog/(d+)$/
正規表現 blog/:id
完全一致 $
パブリック メソッド
----------
Controller
操作対象のメソッドがシステムのキーワードと競合するコントローラー メソッドの場合、サフィックス メソッド
solve'ACTION_SUFFIX'=> 'Action を設定できます', // 操作方法のサフィックス
マルチレベルコントローラーは、コントローラーをグループ化するものです
インスタンス化されたコントローラーが内部の場合、URLアドレス解決を使用するときに自動的にインスタンス化されますコントローラーをまたいで呼び出される場合は、インスタンス化してショートカットを使用して呼び出しますメソッド A (マルチレベルの場合は、A の 2 番目のパラメーターを使用します) メソッドをインスタンス化するときに、事前操作と事後操作を行うことができます (コントローラーにのみ役立ちます)
共通のものは、_before_index pre-method_after_index 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('アドレス式',['パラメータ'],['疑似静的サフィックス'],['表示ドメイン名'])
[モジュール/コントローラ/操作#アンカー@ドメイン名]?パラメータ 1=値 1&パラメータ 2=値 2...
ajax は ajaxReturn を返します
変数配列によって返されるデータは、JSON、JSONP、XML、および EVAL によって処理できます。このメソッドは、DEFAULT_AJAX_RETURN を返すように構成できます。eval は $data データ
を出力します。 JSONP 文字が 1 文字違うだけですが、実際にはまったく同じものではありません。JSON はデータ交換形式であるのに対し、JSONP は非公式のクロスドメイン データ交換プロトコルです。 1 つは情報の形式を記述することであり、もう 1 つは情報を送信するための
合意された方法です。
ジャンプとリダイレクト
$this->success(プロンプト情報、アドレス、秒)
----==--=-=
入力変数
I 関数を通じて変数を取得およびフィルタリングできます
I( 'Variable type.変数名', ['デフォルト値'], ['フィルタメソッド'], ['追加データソース'])
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 メソッドの違いは、モデルのインスタンス化では、D メソッドが定義されたモデル クラスを見つけられない場合、ユーザーがモデル クラスを定義する必要がないことです。
メソッドが自動的に使用されます。
フィールド キャッシュには、フィールドのフィールド情報が含まれます。 DB_FIELDS_CACHE を設定することで、フィールドの自動キャッシュをオフにすることができます。
file
データ テーブルのすべてのフィールド情報を取得します。 ''/*); 呼び出しを取得します すべてのフィールド フィールド
(true)。
データ テーブルを切り替えるには table() を使用します。
システムのデフォルト ルールを使用する必要があります。モデルの実行 書き込み操作 クエリ 読み取り操作
連続操作 (チェーン操作)
where と where を組み合わせて使用できます
データ メソッドはデータベースに書き込むためのものであり、プライマリがあるかどうかを判断するための更新 (保存) にも使用できますキー。オブジェクトは数値
グループ、オブジェクト、または文字列です。
フィールドはフィールドを取得でき、除外されるフィールドはuser_idと
content以外のフィールドです。 書き込み (セキュリティ制御) に使用され、他の書き込みは許可されません $model->field('name')-
>create(); は、フォーム内の唯一の正当なフィールドは、名前フィールドに関係なく、名前フィールドであることを意味します。ユーザーパス ブラウザが変更または追加されたことを意味します
提出フィールドは直接ブロックされます。他のすべてのフィールドはユーザーの送信によって決定されたくないため、
autocomplete 関数を通じて書き込む追加フィールドを定義できます。
filtert (フィールドの内容のフィルタリング) は I の判断に似ています $User->data($data)->filter
('strip_tags')->add(); HTML タグをフィルタリングします (コールバック タイプの関数をサポートします)関数でもクロージャでも構いません
定義)
havingメソッドはgroupメソッドと連携してグループ化した結果から再度クエリを行うものです。
use using using using
add
または save メソッドを使用します。追加または保存後にデータベースに書き込まれるため、変更が生じる前に作成オブジェクトを変更できます。
----
find (フィールドの読み取り) select (フィールド セットの読み取り) getField (フィールド値の読み取り)。 )[Digital update setInc setDec]
delete() [seveと同様、条件を渡さない場合は削除されません]
フォームマッピングデータ取得時に自動処理設定をONにする 'READ_DATA_MAP'=> true
parseFieldsMap を使用して形式を変換することもできます
クエリメソッド
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 簡単なコマンド
プレフィックスサポートによるローカルセッション管理を有効にする方法
上記は、関連する内容を含む Onthink 学習エッセイを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。