学習ノート---Dahua PHPデザインパターン
PHPStorm IDE
開発フォントの選択: Source Code Pro、Courier New、Concolas
php 名前空間: 異なるクラスの同じ名前を持つメソッド間の競合を解決できます
名前空間 test1;
関数テスト(){
}
自動読み込み:
関数__autoload($class){
__DIR__.'/'$class.'.php';
が必要です
}
spl_autoload_register(); この関数は複数の自動ロードを許可し、最初の行に置く必要があります
例:
spl_autoload_register('autoload1');
spl_autoload_register('autoload2');
関数 autoload1($class){
__DIR__.'/'$class.'.php';
が必要です
}
関数 autoload2($class){
__DIR__.'/'$class.'.php';
が必要です
}
後でクラス名::メソッド名 call(); が必要になります
例: Test1::test();Test2::test();
PSR-0仕様
1 phpの名前空間は絶対パスと一致している必要があります
2 クラス名とファイル名の最初の文字は大文字にする必要があります
3 交差ファイルを除き、他の「.php」にはクラスが 1 つだけ必要であり、実行可能コードを含めることはできません。例: echo();
__DIR__ 魔法の定数 現在のファイルのパスを取得します
__FUNCTION__ 魔法の定数 現在のメソッドを取得します
__METHOD__ マジック定数は現在のクラス名とメソッドを取得します
BASEDIR ウェブサイトのルートディレクトリ
spl規格の紹介
SplStack(); 先入れ後出しの定常データ構造
$stack=新しいSplStack();
$stack->push("test1") //高度なインバウンド
;
$stack->push("test2") //上級
;
echo $stack->pop() //最後にアウトバウンド test2 を終了します
echo $stack->pop() //test1 をポップアウトします
SplQueue(); 先入れ先出しキューのデータ構造
$SplQueue=新しいSplQueue();
$SplQueue->enqueue("test1"); // 上級
$SplQueue->enqueue("test2"); //上級
;
echo $SplQueue->dequeue() // test1 が最初に出力されます
echo $SplQueue->dequeue() // test2 が最初に出力されます
SplMinheap(); ヒープデータ構造
$SplMinheap=新しい SplMinheap();
$SplMinheap->insert('test1');
$SplMinheap->insert('test2');
echo $SplMinheap->extract();
echo $SplMinheap->extract();
$sqlFixedArray(); 固定サイズの配列(固定長)
$array= new $sqlFixedArray(10) (括弧内にデータ長を設定します)
$配列['0']=1;
$array['8']=8;
PHP チェーン テスト操作の実装の利点は、1 行のコードを使用して多くの関数を実装できることです
$ob->where()->order()->limit()->select();
PHP の高度なオブジェクト指向機能
PHPマジックメソッドの使い方
1__get/__ set //
2 __call/__callStatic //PHP メソッド呼び出しの制御/クラスの静的メソッド呼び出しの制御に使用されます
3 __toString //PHP オブジェクトを文字列に変換します
4 __invokeに
印刷結果は、添字 1 ~ 7 に値があるかどうかに関係なく、値がない場合は自動的に null 値が与えられます。
PHPstormの構成とインストール
http://blog.csdn.net/ikscher/article/details/43672365
基本的な3つのデザインパターン
ファクトリ パターン: コード内で new を new に直接置き換えるのではなく、ファクトリ メソッドまたはクラスを使用してオブジェクトを生成します
利点: 変更があった場合に備えて、ファクトリ パターン クラスを 1 つ変更するだけで済みます
シングルケースモード: 特定のクラスのオブジェクトを一度だけ作成できます
利点: 必要なインスタンス オブジェクトの数に関係なく、データベースへの接続は実際には 1 回だけです
登録モード: グローバル共有交換オブジェクトはファクトリーモードでより適切に動作します
メリット: グローバルに共有される交換オブジェクト
登録ツリーをファクトリーモードと組み合わせて試すと、メモリリソースの無駄を減らすことができます。同じオブジェクトが呼び出されるからです。データペアを追加することもできます
アイコンマッピングモードはデータベースに対する直接操作を減らし、クラスライブラリのプロパティを操作します
アダプターモード
さまざまなインターフェースを統合 API にカプセル化します
PHP クラスは単一継承です。つまり、クラスが複数のクラスの機能を必要とする場合、継承は無力です。
クラスインターフェーステクノロジーを組み込みました。
抽象クラス内のすべてのメソッドが抽象メソッドの場合、変数は宣言されず、インターフェイス内のすべてのメンバーはパブリックになります
権限の場合、この特別な抽象クラスはインターフェイスと呼ばれます。
インターフェースはキーワードinterfaceを使用して定義され、キーワードimplementsはインターフェース内のメソッドを実装するために使用されます。これは完全に実装する必要があります。
戦略パターン 特定の特定のコンテキストに適応するために、特定の動作とアルゴリズムのセットをクラスにカプセル化します。このパターンは戦略パターンです。
たとえば、ユーザーの性別を判断し、さまざまなニーズを提供します
最初に男性のニーズを書き留め、次に女性のニーズを書き留めます
面倒な判断をして実装するのではなく、送信された値に基づいてどの要件を呼び出すかを決定します
変更する場合は、別の要件を記述するだけです。
データオブジェクトマッピングモード
1 データ オブジェクト マッピング モードでは、オブジェクトとデータ ストレージをマッピングします。オブジェクトに対する操作はデータ ストレージに対する操作にマッピングされます。
オブザーバー パターン オブジェクトの状態が変化すると、それに依存するすべてのオブジェクトが通知され、イベントの発生時に自動的に更新されます
。
生成されると、それに関連するものはすべてオブザーバークラスに書くことができます
プロトタイプ パターンはファクトリー パターンに似ており、どちらもオブジェクトの作成に使用されます
ファクトリーパターンの実装とは異なり、プロトタイプパターンは事前にプロトタイプオブジェクトを作成し、そのプロトタイプオブジェクトを複製することで新しいオブジェクトを作成します。
これにより、クラス作成時の初期化が不要になります
プロトタイプパターンは大きなオブジェクトの作成に適しています。大きなオブジェクトを作成するには、毎回新しいものを作成すると、大量のコストがかかります。
メモリコピーが必要です。
使用法: たとえば、作成されたクラス オブジェクトには多くのループなどが含まれており、新規作成後、次回呼び出されたときにオブジェクトを直接複製できます。
新しく続ける代わりに
デコレータモード デコレータモード(Decorator)は、クラスが変更された場合に、クラスの機能を動的に追加および変更することができます。
従来の編集モードに追加機能が追加されました。継承するサブクラスを作成し、クラスメソッドを再実装する必要があります
デコレータ パターンを使用すると、実行時にデコレータ オブジェクトを追加するだけで済み、最大限の柔軟性が得られます。
反復子パターンは、内部実装を知らずに集合オブジェクトの内部要素を走査します
従来のプログラミング モデルと比較して、反復子パターンは要素を走査するために必要な操作を隠すことができます
名前空間テスト;
クラス AllUser は Iterator を実装します {//PHP 自体が提供するイテレータ インターフェイスを呼び出します
$id が保護されました;
protected $data = array();
保護された $num ;
関数__construct(){
アウトアウトウェイアウトサーアウトアロウアウトアウトズトゥビーズ』
//データベースを読み取る
}
function valid(){//現在次の要素があるかどうかを確認します
}
function next(){//次の要素を取得します
}
function current(){ //現在の要素を取得します
}
function rewind(){//イテレータ全体をリセットします
}
function key(){//イテレータ内の位置を取得します
}
}
エージェントモード
クライアントとエンティティの間にプロキシ オブジェクト (プロキシ) を確立し、エンティティに対してクライアントによって実行されるすべての操作がプロキシ オブジェクトに委任され、エンティティが隠蔽されます。
の具体的な実装の詳細
プロキシをビジネス コードから分離し、ビジネス コードが RPC を通じてタスクを委任することもできます。
http://www.bkjia.com/PHPjc/1060602.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1060602.html技術記事研究メモ---Dahua PHP デザインパターン PHPStorm IDE 開発フォントの選択: Source Code Pro、Courier New、Concolas PHP 名前空間: 異なるクラスの同じ名前のメソッドの競合を解決できます...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。