2011-12-24 10 views
6

मेरे पास PHP में कई विधियों और चर के साथ एक कक्षा है। हर बार मुझे एक ही कक्षा में किसी अन्य को कॉल करने की विधि की आवश्यकता होती है, मुझे $this-> जोड़ना होगा। (!) इस तरह के रूप में कुछ बुरी तरह से सुपाठ्य स्रोत का उत्पादन:

$nextX = $this->calculateNextX($this->DX, $this->DY, $this->DZ); 
$nextY = $this->calculateNextY($this->DX, $this->DY, $this->DZ); 
$nextZ = $this->calculateNextZ($this->DX, $this->DY, $this->DZ); 
$this->X = $nextX; 
$this->Y = $nextY; 
$this->Z = $nextZ; 

वहाँ एक रास्ता $this-> हर जगह से बचने के लिए है?

+3

बहुत अच्छा पन :) – Marlon

+0

प्रत्येक गणना विधि को संबंधित संपत्ति को संशोधित करने के बारे में कैसे? – BoltClock

+0

@ बोल्टक्लॉक हमेशा ऐसा नहीं करेगा। प्रत्येक गणना अन्य स्थानों में पुन: प्रयोज्य है। मैंने इसे तीन से अधिक चर पारित करने से बचने के लिए पहले ही एक्स, वाई और जेड पढ़ा है। – fernacolo

उत्तर

6

नहीं, ओओपी की अंतर्निहित धारणा के साथ उस निर्माण से बचना संभव नहीं है।

पीएचपी, जावास्क्रिप्ट, पायथन और पर्ल की तरह - लेकिन जावा के विपरीत है और हमेशा की तरह रूबी नहीं - या, "वर्तमान उदाहरण के लिए" $this - - पहुँच सदस्यों को हमेशा एक स्पष्ट रिसीवर की आवश्यकता है। सिंटैक्स सिर्फ इस रूप को प्रदर्शित करने के लिए PHP का उपयोग होता है और इस भाषा को "देर से काम करने वाले" होने और इसे फिट करने के लिए अत्यधिक प्रभावित होने की संभावना है। यह पर्ल/सी सिंटैक्स की याद दिलाता है।

स्थान बदला जा सकता है जबकि या साइटों की संख्या कम करने योग्य हो सकता है, दिन के अंत में, कि सदस्यों तक पहुँचने की विधि है।

हैप्पी कोडिंग।

+0

हैप्पी कोडिंग और मेरी क्रिसमस :) – NikiC

0

आप इसे यहां तक ​​कि सी में बाकी

$a = $this; 
$a->stuff(); 

कुछ करने के लिए सेट कर सकते हैं ++ मैं स्पष्टता है कि आप एक वर्ग के सदस्य पर कार्य कर रहे हैं के लिए this हालांकि उपयोग करने के लिए पसंद करते हैं। हालांकि यह PHP में वैकल्पिक नहीं है।

2

आप प्रत्येक विधि

extract(get_object_vars($this)); 

में ऐसा हालांकि कि केवल आप ही चर, नहीं विधियों, और न ही स्थिर गुणों मिलता है होगा सकता है। और वे संदर्भ नहीं होंगे, इसलिए पढ़ने के लिए केवल उपयोगी।

+0

आपने मुझे एक php rant बचाया। – clankill3r

संबंधित मुद्दे