Konsep Teras
DRY menekankan bahawa setiap pengetahuan dalam sistem harus mempunyai perwakilan tunggal yang tidak jelas.
Contoh Kod Melanggar DRY
Contoh 1: Logik Pengesahan
// 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 } }
Penyelesaian KERING
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 } }
Melaksanakan DRY dengan Warisan
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); } }
Menggunakan Ciri untuk KERING
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 } }
Menggunakan Pemalar
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); } }
Contoh ini menunjukkan cara menggunakan DRY melalui pelbagai ciri PHP seperti pewarisan, sifat, pemalar dan pengekstrakan kaedah yang betul. Matlamatnya adalah untuk mengekalkan satu sumber kebenaran untuk mana-mana fungsi tertentu dalam pangkalan kod anda.
Atas ialah kandungan terperinci KERING (Jangan Ulangi Sendiri). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Phpsessionscanstorestrings, nombor, tatasusunan, andobjects.1.strings: textdatalikeusernames.2.numbers: integersorfloatsforcounters.3.Arrays: ListsLikeshoppingCarts.4.Objects: complextructureSturesthatareserialized.

Tostartaphpsession, usesession_start () atthescript'sbeginning.1) placeitbeforeanyoutputtosetthesessioncookie.2) usesessionsforusererdatalikeloginstatusorshoppingcarts.3)

Penjanaan semula sesi merujuk kepada menjana ID sesi baru dan membatalkan ID lama apabila pengguna melakukan operasi sensitif dalam kes serangan tetap sesi. Langkah-langkah pelaksanaan termasuk: 1. Mengesan Operasi Sensitif, 2. Menjana ID Sesi Baru, 3. Memusnahkan ID Sesi Lama, 4. Kemas kini maklumat sesi pengguna.

Sesi PHP mempunyai kesan yang signifikan terhadap prestasi aplikasi. Kaedah pengoptimuman termasuk: 1. Gunakan pangkalan data untuk menyimpan data sesi untuk meningkatkan kelajuan tindak balas; 2. Mengurangkan penggunaan data sesi dan hanya menyimpan maklumat yang diperlukan; 3. Gunakan pemproses sesi yang tidak menyekat untuk meningkatkan keupayaan konkurensi; 4. Laraskan masa tamat tempoh sesi untuk mengimbangi pengalaman pengguna dan beban pelayan; 5. Gunakan sesi berterusan untuk mengurangkan bilangan data membaca dan menulis masa.

Phpsessionsareserver-side, whilecookiesareclient-side.1) Sessionsstoredataontheserver, aremoresecure, andhandlelargerdata.2) cookiesstoredataontheclient, arelesssecure, andlimiteShorsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsions

Phpidentifierauser'sSessionusingSessionCookiesandSessionIds.1) whensession_start () ISCALLED, phpGeneratesAuniquesessionIdstoredinacookienamedPhpsessidontheUserer'sBrowser.2) ThisIdallowsPhptoretRievesSessionDataFromtheserver.

Keselamatan sesi PHP boleh dicapai melalui langkah -langkah berikut: 1. Gunakan session_regenerate_id () untuk menjana semula ID sesi apabila pengguna log masuk atau merupakan operasi penting. 2. Sulitkan ID sesi penghantaran melalui protokol HTTPS. 3. Gunakan session_save_path () untuk menentukan direktori selamat untuk menyimpan data sesi dan menetapkan kebenaran dengan betul.

PhpsessionFileSarestoredIntHedirectorySpecifiedBySession.save_path, biasanya/tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomethis: 1) usession_save_path ()


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.
