का उपयोग किए बिना PHP में फ़ंक्शंस के बीच साझा चर मेरे पास एक memcache सर्वर के साथ बातचीत करने के लिए एक कक्षा है। मेरे पास डेटा डालने, हटाने और पुनर्प्राप्त करने के लिए अलग-अलग फ़ंक्शन हैं। मूल रूप से प्रत्येक कार्य memcache_connect()
के लिए एक कॉल, तथापि कि अनावश्यक था, उदा .:ग्लोबल्स
mc->insert()
mc->get()
mc->delete()
बनाया तीन मेम्कैश कनेक्शन होगा। मैं इस के चारों ओर वर्ग के लिए एक निर्माण बनाने के द्वारा काम किया:
function __construct() {
$this->mem = memcache_connect(...);
}
और फिर $this->mem
का उपयोग कर जहाँ भी संसाधन की जरूरत थी, इसलिए तीन कार्यों में से प्रत्येक का उपयोग एक ही memcache_connect
संसाधन।
यह ठीक है, लेकिन अगर मैं तो यह अभी भी दो memcache_connect
कॉल कर रहा है, अन्य वर्गों के अंदर वर्ग फोन उदा .:
class abc
{
function __construct() {
$this->mc = new cache_class;
}
}
class def
{
function __construct() {
$this->mc = new cache_class;
}
}
जब यह केवल जरूरतों एक।
मैं इसे ग्लोबल्स के साथ कर सकता हूं लेकिन अगर मुझे ऐसा नहीं करना है तो मैं उनका उपयोग नहीं करना चाहूंगा।
उदाहरण वैश्विक कार्यान्वयन:
$resource = memcache_connect(...);
class cache_class
{
function insert() {
global $resource;
memcache_set($resource , ...);
}
function get() {
global $resource;
return memcache_get($resource , ...);
}
}
तो कोई फर्क नहीं पड़ता कि कितनी बार वर्ग कहा जाता है वहाँ केवल memcache_connect
करने के लिए एक कॉल किया जाएगा।
क्या ऐसा करने का कोई तरीका है या क्या मुझे ग्लोबल्स का उपयोग करना चाहिए? एम सी उदाहरण में
यह एक उचित समाधान है लेकिन चलिए इसका सामना करते हैं, यह एक वैश्विक है। :) – cletus
यही वह है जो मैं करता हूं। आप इसका परीक्षण नहीं कर सकते, लेकिन आइए ईमानदार रहें, जो इस तरह की चीज का परीक्षण करते हैं? –
सवाल यह है कि यदि एक छोटा सा हिस्सा टेस्टेबल नहीं है तो टेस्टेबल पूरे कोड को कैसे शेष रखता है। या आप अन्य परीक्षणों के लिए एक अनुरूपित MemCache ऑब्जेक्ट को कैसे कार्यान्वित करेंगे? – okoman