मुझे लगभग बनाने की आवश्यकता है। 5-7 कक्षाएं, प्रत्येक वर्ग में बहुत से सदस्य होंगे (हम कहते हैं कि प्रत्येक वर्ग में 20 सदस्य होंगे)। मैं उन्हें सार्वजनिक पहुंच का उपयोग कर बना सकता हूं, जैसे:PHP ओओपी बहुत सारे सेटर्स, गेटर्स
class A {
public $myPropertyOne = '';
public $myPropertyTwo = '';
...
}
इन सदस्यों को निजी बनाने और प्रत्येक संपत्ति के लिए प्राप्त/सेट विधियां बनाने का मेरा पसंदीदा तरीका है। अर्थात।
class A {
private $myPropertyOne = '';
private $myPropertyTwo = '';
public function getMyPropertyOne() {
return $this->myPropertyOne;
}
public function setMyPropertyOne($myPropertyOne) {
$this->myPropertyOne = $myPropertyOne;
}
public function getMyPropertyTwo() {
return $this->myPropertyTwo;
}
public function setMyPropertyTwo($myPropertyTwo) {
$this->myPropertyTwo = $myPropertyTwo;
}
}
लेकिन कक्षा में विचार करने के लिए 20 गुण होंगे, मेरे पास 40 तरीके जोड़ने के अलावा होगा। और यहां मेरी चिंता यह है कि यह स्क्रिप्ट को धीमा कर देगा और इसके लिए बहुत अधिक मेमोरी की आवश्यकता होगी (याद रखें कि मुझे इस तरह के कई वर्ग होने जा रहे हैं)।
एक और समाधान जादू कार्यों __set, __get का उपयोग करने के लिए हो सकता है, लेकिन मैं नहीं चाहता, क्योंकि विकास आईडीई में कोड पूर्णता मेरे लिए महत्वपूर्ण गुणों का सुझाव नहीं देगी।
यदि यह एक संकलित भाषा (सी ++ की तरह) होगी तो मेरे पास कोई प्रश्न नहीं होगा और गेटर्स, सेटर्स के साथ समाधान का उपयोग करेगा, लेकिन चूंकि PHP की भाषा का अर्थ है, इसलिए मुझे अपनी रैप में दिलचस्पी है और कम रैम का उपयोग करना है जितनी जल्दी हो सके।
अग्रिम धन्यवाद, इस प्रश्न के बारे में किसी भी विचार की बहुत सराहना की जाएगी!
मेरे राय
आप सभी अपने जवाब के लिए धन्यवाद, मैं सिर्फ मामले में किसी को मेरी राय साझा करने के लिए इस प्रश्न का उत्तर के लिए दिखेगा चाहता था।
मैं उन लोगों के साथ पूरी तरह से सहमत नहीं हूं जो आपको कहते हैं कि आपको प्रदर्शन की परवाह नहीं है क्योंकि यह अनुकूलकों का कार्य है, मुझे लगता है कि यह महत्वपूर्ण कारक है (मेरे लिए कम से कम मेरे लिए), जब हम व्याख्या की गई भाषा से निपट रहे हैं जैसे कि PHP हमें हमेशा स्मृति और गति के बारे में सोचना होगा (यह सब मुझे याद दिलाता है जब मैं डॉस के लिए सिस्टम ऐप विकसित कर रहा था, हे :) और आप हमेशा कुल रैम के खराब सीपीयू और किलोबाइट्स के साथ ही सीमित हैं ताकि आप खुश हों एक अतिरिक्त बाइट बचा सकता है), PHP विकास में आपके पास एक ही तस्वीर है, भले ही आप कितने सर्वर जोड़ते हैं, उपयोगकर्ताओं की गिनती हमेशा अधिक होगी ताकि आपको हमेशा यह तय करना पड़े कि क्या आप क्लासिक/सुरक्षित/उचित विधि का पालन करना चाहते हैं या इससे बचने के लिए और गति या स्मृति में कुछ लाभ प्राप्त करें।
तो .... मेरी राय यह है कि सभी सदस्यों के लिए सार्वजनिक पहुंच का उपयोग करना और सभी गुणों के लिए गेटर्स/सेटर्स से बचने और संपत्तियों के लिए प्राप्त/सेट विधियों के साथ निजी पहुंच का उपयोग करना है जिसके लिए डेटा सत्यापन या प्रारंभिक आवश्यकता है एक मूल्य निर्धारित करने से पहले।
उदाहरण के लिए:
class B {
public $myPropertyOne = '';
public $myPropertyTwo = '';
private $myPropertyThree = array();
public function getMyPropertyThree() {
return $this->myPropertyThree;
}
public function setMyPropertyThree($val) {
if(!is_array($val)) {
return;
}
$this->myPropertyThree = $val;
}
}
मेरे सवाल पर समय बिताने के लिए धन्यवाद!
यह एक माइक्रो-ऑप्टिमाइज़ेशन है, और आपको इसके बारे में चिंता नहीं करना चाहिए। –
ठीक है, हाँ, लेकिन 280 जोड़ने के लिए एक परिप्रेक्ष्य विधियों (7 कक्षाओं, 20 निजी सदस्यों के लिए) बस इसके लिए मुझे स्मृति/गति दृष्टिकोण से थोड़ा डराता है। और मान लें कि सिस्टम बढ़ता है और मैं उन वर्गों को 15 की गिनती तक बढ़ा दूंगा .. फिर मुझे 600 तरीके मिलेंगे। दूसरी तरफ मुझे एहसास है कि ये प्राप्त/सेट विधियों को केवल तभी निष्पादित किया जाएगा जब एक ही समय में मुझे लगता है कि जब PHP स्रोत कोड का विश्लेषण करेगा तो यह स्मृति में विधियों की एक तालिका का निर्माण करेगा, वाक्यविन्यास विश्लेषण करेगा और यह सब हो सकता है स्क्रिप्ट के काम को धीमा कर दें, क्या मेरा धारणा सही है? – user1476490
मेमोरी अपेक्षाकृत सस्ता है और विधि ओवरहेड प्रति कक्षा (प्रति उदाहरण नहीं) है। PHP भी उसी प्रक्रिया में एकाधिक अनुरोधों को संभालने की तरह चाल करता है mod_php, आदि) तो शुरुआती लोड समय (जितना छोटा हो सकता है) पूरी तरह से अनदेखा किया जा सकता है ... किसी भी मामले में, * बेंचमार्क पहले * (वास्तविक स्थितियों के तहत) यह देखने के लिए कि सिस्टम के "धीमे" भाग क्या हैं। (एफडब्ल्यूआईडब्लू, मान लीजिए कि 600 विधियां हैं, और प्रत्येक विधि "कचरे" 1 किलो है। एक विशाल 600 केबी "बर्बाद" है। वास्तव में चीजों की योजना में इतना अधिक नहीं है ... विशेष रूप से यह मानते हुए कि PHP में प्रत्येक चर * प्रत्येक चर * अपशिष्ट ";-) –