アクティビティ起動モード コマンド チェーン モード命令と組み合わせた PHP シングルトン モード
人によっては記事の内容が簡単すぎるかもしれません。時間が限られているため(妻と買い物に行かなければなりません、笑)、デザインに不規則性、コードの書き方に不規則性、バグがあります。 、などなど。私たちが一緒に進歩できるように、すべてのヒーローがそれを指摘してくれることを願っています。私のレベルは限られています^_^
PHPでのデザインパターンの適用については、誰もがたくさんの本や記事を読んだと思いますが、それらはほとんどありません。サンプルを直接挙げると、ほとんどを読んだ後、プロジェクトの練習がないと、デザインパターンの部分を理解するのが難しくなります
コードが複雑になりすぎないように、例外処理などの内容は追加されていません。
シングルピースモードとコマンドチェーンモード 基本的な知識については、詳しくは説明しませんので、ご自身で調べてください。
コードをコピーします コードは次のとおりです。
/*
*@author:NoAngels
*@time :August 30, 2008
*/
interface IRunAction{
//APPで実行できるクラスで定義されたメソッドを取得します
static function LoadActions();
//クラス内のエントリ関数はクラス内の他の関数を呼び出します
function runAction($action, $args) を使用します
/*
*APP クラス システムのコア部分
*/
class APP{
static private $__instance = null;
static private $__flag = 1;
private function __construct(){}
//Singleware モードのデザインは、このインスタンスを取得しますclass
static function Load(){
if(self::$__instance == null) self: :$__instance = 新しい APP;
return self::$__instance;
}
//APP の $__instance に名前を追加します新しいコマンドを追加するたびに、このクラスのインスタンスが以前に追加されているかどうかを確認します。//存在する場合は、操作を無視します。
public function addCommand($cmdName){
foreach( $cmd としての self::$__ コマンド){
if(strto lower(get_class($cmd)) == strto lower(get_class($cmdName) ))){
self::$__flag = 0
}
}
if(self::$__flag == 1) self::$__commands[] = $cmdName;
self::$__flag = 1;
}
//コマンド チェーン パターン設計のコア部分はエントリ関数を呼び出しますインスタンスの
//まず、クラス内でオペレーションの呼び出しが許可されているかどうかを確認します。許可されていない場合は、未定義のオペレーションの終了を求めます。
self::$__flag = 0;
foreach(self::$__commands as $cmd){
if(in_array($action, $cmd->LoadActions())){
self::$__flag = 1; runAction($action, $args);
}
}
if(self::$__flag == 0){
exit("アクションごとの未定義のアクション: $action"); }
}
//クラスのインスタンスを削除するには、クラスの名前を指定するだけです
public function RemoveCommand($className){
foreach(self::$__commands as $key=> ;$cmd){
if (strto lower(get_class($cmd)) == strto lower($className)){
unset(self::$__commands[$key])
}
}
}
//全員向け 加算と削除は成功しました
public function viewCommands(){
echo(count(self::$__commands))
}
}
//クラス ユーザーは IRunAction インターフェイスを実装します
class ユーザーは IRunAction{
// 呼び出し可能な操作を定義します
static private $__actions = array('addUser', 'modifyUser', 'removeUser');
//呼び出し可能な操作を取得します。実際のプロセスでは直接使用しません。$__actions はパブリック呼び出しとして設計されています
//代わりに、 $__actions の値を取得する LoadActions 関数を設計します
static public function LoadActions(){
return self::$__actions
}
//指定された関数を実行します
public function runAction($action, $args){
/ /この関数の使用方法がわからない場合は、マニュアルを参照してください
call_user_func(array($this,$action), $args)
}
//単なるテスト関数
protected function addUser($name); ){
echo($name ; self::$__actions;
}
パブリック関数 runAction($action, $args){
call_user_func(array($this,$action), $args);
}
保護関数 addTest ($name){
echo( $name);
}
}
//以下はテストコードです
APP::Load()->addCommand(new User); ;addCommand(新しいユーザー);
APP::Load()->addCommand(新しいユーザー);
APP::Load()->runCommand ('addUser', 'NoAngels');
APP::Load()->addCommand(new Test);
APP::Load()->runCommand('addTest', null);
APP クラスはシステムのコア部分であるシングルトン モデルを使用して設計されており、Load メソッドが APP クラスのインスタンスをロードするものであることがわかると思います。これは getInstance 静的メソッドに相当します。いくつかの本には、addCommand、runCommand、removeCommand が含まれています。runCommand は、コマンド チェーン モードのコア スタートアップ プログラムです。コードはすでに公開されています。非常に明確なので、ここでは詳細は説明しません。
User クラスと Test クラスは、IRunAction インターフェイスを実装します。両方のクラスは、APP の runCommand によって呼び出すことができる操作を含む静的プライベート変数 $__actions を定義します。
以下はシステムの実行プロセスです:
APPが開始します
----- addCommand、追加されたクラスがシングルトンを使用して設計されている場合、実行する操作が属するクラスを追加します。それ以外の場合は、次のように調整できます
addCommand(new someClass)
-------runCommand などがあります。 User クラスで addUser 操作を実行すると、直接 runCommand($acttion, $args) を有効にすることができます。いずれかのクラスにこの操作がある場合は、そのインスタンスの runAction 関数を呼び出します。 addCommand を使用して特定のクラスのインスタンスを追加しない場合、未定義の操作が要求され、クラス User とクラス Test の runAction が呼び出されます。
ヒント:これは説明と例です。このアイデアをどのように理解するかは、すべて自分で行う必要があります。MVC を実装するかどうかは、フレームワーク内で 1 つのエントリ ファイルにすることができます。
実際の操作効果は次のとおりです: 中国語レベルに限定されます。何かわからないことがあれば、ご連絡ください。
時間があるときにいくつか記事を書きます。後で
上記では、Activity 起動モード、PHP シングルトン モード、およびコマンド チェーン モードの使用方法を紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。
