コアコンセプト
DRY は、システム内のすべての知識が単一の明確な表現を持つ必要があることを強調しています。
DRY に違反するコードの例
例 1: 検証ロジック
// WET (Write Everything Twice) Code class User { public function validateUsername($username) { if (strlen($username) 20) { throw new Exception("Username must be between 3 and 20 characters"); } if (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) { throw new Exception("Username can only contain letters, numbers and underscore"); } } public function updateUsername($username) { // Same validation repeated if (strlen($username) 20) { throw new Exception("Username must be between 3 and 20 characters"); } if (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) { throw new Exception("Username can only contain letters, numbers and underscore"); } // Update logic } }
ドライソリューション
class User { private function validateUsername($username) { if (strlen($username) 20) { throw new Exception("Username must be between 3 and 20 characters"); } if (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) { throw new Exception("Username can only contain letters, numbers and underscore"); } } public function createUser($username) { $this->validateUsername($username); // Creation logic } public function updateUsername($username) { $this->validateUsername($username); // Update logic } }
継承を使用した DRY の実装
abstract class BaseController { protected function jsonResponse($data, $status = 200) { header('Content-Type: application/json'); http_response_code($status); echo json_encode($data); } } class UserController extends BaseController { public function show($id) { $user = User::find($id); return $this->jsonResponse($user); } } class ProductController extends BaseController { public function show($id) { $product = Product::find($id); return $this->jsonResponse($product); } }
DRY の特性の使用
trait Loggable { private function log($message) { $timestamp = date('Y-m-d H:i:s'); file_put_contents('log.txt', "[$timestamp] $message\n", FILE_APPEND); } } class UserService { use Loggable; public function createUser($data) { $this->log("Creating new user"); // User creation logic } } class PaymentService { use Loggable; public function processPayment($amount) { $this->log("Processing payment: $amount"); // Payment processing logic } }
定数の使用
class Config { const DEFAULT_ITEMS_PER_PAGE = 10; const MAX_UPLOAD_SIZE = 5242880; // 5MB const ALLOWED_FILE_TYPES = ['jpg', 'png', 'pdf']; } class FileUploadService { public function validateFile($file) { if ($file['size'] > Config::MAX_UPLOAD_SIZE) { throw new Exception("File too large"); } $extension = pathinfo($file['name'], PATHINFO_EXTENSION); if (!in_array($extension, Config::ALLOWED_FILE_TYPES)) { throw new Exception("Invalid file type"); } } } class MediaController { public function index() { return $this->paginate(Config::DEFAULT_ITEMS_PER_PAGE); } }
これらの例は、継承、特性、定数、適切なメソッド抽出などのさまざまな PHP 機能を通じて DRY を適用する方法を示しています。目標は、コードベース内の任意の機能について信頼できる単一の情報源を維持することです。
以上がドライ (同じことを繰り返さないでください)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









