में कक्षाओं को कैसे व्यवस्थित करें मैं PHP में ओओपी पर जाने पर काम कर रहा हूं। मैंने php.net पर स्पष्टीकरण पढ़ा है, लेकिन मुझे उम्मीद थी कि मैं यहां कुछ विशिष्ट उत्तर प्राप्त कर सकता हूं।PHP
मैंने अपने प्रश्न को स्पष्ट करने के लिए निम्नलिखित उदाहरण बनाने की कोशिश की। मान लें कि मेरे पास "डेटाबेस", "उत्पाद" और "उपयोगकर्ता" वर्ग हैं, और यदि उपयोगकर्ता के पास पहुंच है तो मैं उत्पादों को प्रदर्शित करना चाहता हूं।
इसलिए मैं "उत्पाद" वर्ग "शो प्रोडक्ट्स()" फ़ंक्शन को कॉल करता हूं, जो बदले में "उपयोगकर्ता" वर्ग का एक उदाहरण बनाता है, जो "डेटाबेस" ऑब्जेक्ट का उदाहरण बनाता है और उपयोगकर्ताओं को एक्सेस स्तर की जांच करता है।
यदि उपयोगकर्ता का उपयोग है, तो "showProducts()" फ़ंक्शन "डेटाबेस" ऑब्जेक्ट का एक और उदाहरण बनाता है, और डेटाबेस से पूछताछ करता है।
class Database{
public function query(){
//runs query here
}
public function __construct() {
//sets up connection here
}
}
class User{
public function checkAccess(){
$db = new Database();
$db->query(//pass in query to check access)
//does stuff, then returns true or false
}
}
class Products{
public function showProducts(){
$user = new User();
if($user->checkAccess())
$db = new Database();
$db->query(//pass in query to get products)
}
}
मुझे उम्मीद थी कि कोई यह उचित तरीके से कैसे किया जा सकता है।
मैं कुछ प्रकार की नियंत्रक कक्षा चाहता हूं, जो एक "डेटाबेस" ऑब्जेक्ट बनाता है, जो "डेटाबेस" ऑब्जेक्ट के कई उदाहरणों को बनाए बिना, इसे एक्सेस करने के लिए आवश्यक सभी कक्षाओं के लिए उपलब्ध है। मैं उपयोगकर्ता वर्ग के साथ एक ही चीज़ चाहूंगा, इसलिए एक उपयोगकर्ता उपयोगकर्ता ऑब्जेक्ट करता है कि हर बार जब मैं "उपयोगकर्ता" कक्षा में कुछ उपयोग करने की आवश्यकता होती हूं तो एक नई वस्तु बनाने के बिना सभी कक्षाएं एक्सेस कर सकती हैं।
अगर मेरा प्रश्न स्पष्ट नहीं है, तो मैं क्षमा चाहता हूं, और किसी भी प्रतिक्रिया के लिए अग्रिम धन्यवाद !!
उत्तर के लिए सभी को धन्यवाद!
उत्तर के लिए बहुत बहुत धन्यवाद!तो अगर मेरे पास उपयोगकर्ता वर्ग पर संदर्भित एक और वर्ग था, तो मैं $ उपयोगकर्ता ऑब्जेक्ट में पैरामीटर के रूप में भी पास करूंगा? – Ben
हाँ, आप कर सकते हैं! आप जितनी चाहें उतनी कक्षाएं पारित कर सकते हैं। ऑब्जेक्ट को वास्तव में उस वस्तु को काम करने की आवश्यकता होने पर आप कन्स्ट्रक्टर के माध्यम से ऑब्जेक्ट पास कर सकते हैं। और यदि ऑब्जेक्ट वैकल्पिक है तो आप इसे सेटटर विधि के माध्यम से पारित कर सकते हैं। एक बार जब आप जटिल निर्भरता प्राप्त कर लेते हैं, तो आप निर्भरता इंजेक्शन कंटेनर का उपयोग करने के बारे में सोच सकते हैं जहां आप निर्भरता का वर्णन करेंगे और कंटेनर अन्य वस्तुओं से ऑब्जेक्ट इकट्ठा करने और इसे वापस करने में सक्षम होगा :) आप यहां निर्भरता इंजेक्शन और निर्भरता इंजेक्शन कंटेनर पर और अधिक पढ़ सकते हैं : http://fabien.potencier.org/article/12/do-you-need-a- निर्भरता- इंजेक्शन- कंटेनर – otporan