एक डेटाबेस के साथ काम करने के लिए कुछ ओओपी रणनीति क्या हैं लेकिन चीजों को परीक्षण योग्य बनाए रखना? मान लें कि मेरे पास एक उपयोगकर्ता वर्ग है और मेरा उत्पादन वातावरण MySQL के खिलाफ काम करता है। मुझे कुछ संभावित दृष्टिकोण दिखाई दे रहे हैं, जिन्हें PHP का उपयोग करके दिखाया गया है:
के लिए इंटरफेस के साथ एक $ DATA_SOURCE पास करें
load()औरsave()डेटा की सार बैकएंड स्रोत के लिए। परीक्षण करते समय, एक अलग डेटा स्टोर पास करें।$ उपयोगकर्ता = नया उपयोगकर्ता ($ mysql_data_source); $ उपयोगकर्ता-> लोड ('बॉब'); $ उपयोगकर्ता-> setNickname ('रॉबी'); $ उपयोगकर्ता-> सहेजें ();एक कारखाने का उपयोग करें जो डेटाबेस तक पहुंचता है और उपयोगकर्ता के निर्माता को परिणाम पंक्ति से गुजरता है। परीक्षण करते समय, मैन्युअल रूप से $ पंक्ति पैरामीटर उत्पन्न करें, या UserFactory :: $ data_source में ऑब्जेक्ट को मॉक करें। (मैं रिकॉर्ड में परिवर्तन कैसे बचा सकता हूं?)
class UserFactory { static $data_source; public static function fetch( $username ) { $row = self::$data_source->get( [params] ); $user = new User( $row ); return $user; } }
मेरे पास यहाँ डिज़ाइन पैटर्न और क्लीन कोड है, लेकिन मैं लागू अवधारणाओं को खोजने के लिए संघर्ष कर रहा हूँ।