से तर्क के साथ कक्षा को तुरंत कैसे चालू करें मैं ऐसी स्थितियों में हूं जहां मुझे किसी अन्य वर्ग के उदाहरण के भीतर तर्क के साथ कक्षा को तुरंत चालू करने की आवश्यकता है। , मैं वर्ग के cls नीचे का उपयोग कर समारोह श्रेणी से ऊपर का दृष्टांत की जरूरत अबPHP: किसी अन्य वर्ग
//test.php
class test
{
function __construct($a, $b, $c)
{
echo $a . '<br />';
echo $b . '<br />';
echo $c . '<br />';
}
}
:
class myclass
{
function cls($file_name, $args = array())
{
include $file_name . ".php";
if (isset($args))
{
// this is where the problem might be, i need to pass as many arguments as test class has.
$class_instance = new $file_name($args);
}
else
{
$class_instance = new $file_name();
}
return $class_instance;
}
}
अब जब मैं थोड़ी देर के तर्क गुजर परीक्षण वर्ग का एक उदाहरण बनाने की कोशिश यहाँ प्रोटोटाइप है यह करने के लिए:
$myclass = new myclass;
$test = $myclass->cls('test', array('a1', 'b2', 'c3'));
यह देता है त्रुटि: गुम तर्क को 1 और 2; केवल पहला तर्क पारित किया जाता है।
यह ठीक काम करता है अगर मैं उस वर्ग को तत्काल करता हूं जिसमें उसके कन्स्ट्रक्टर फ़ंक्शन में कोई तर्क नहीं है।
अनुभवी PHP डेवलपर्स के लिए, ऊपर कोई समस्या नहीं होनी चाहिए। कृपया मदद करे।
धन्यवाद
आपके प्रश्न से संबंधित नहीं है, लेकिन फ़ंक्शन परिभाषा में आप सरणी() को असाइन करते समय $ args हमेशा 'isset'' होंगे। आपको 'खाली', या '$ args = null' में रुचि हो सकती है। – Tordek
मुझे खेद है, यह आपके प्रश्न से भी संबंधित नहीं है, लेकिन आप जो कर रहे हैं वह अच्छा नहीं है। आपके प्रश्न का उत्तर यह है: अपने कन्स्ट्रक्टर को सरणी लेनी चाहिए, कुछ वर्ग विशेषताओं को रखें, फिर सरणी को संसाधित करें और इसे क्लास विशेषताओं में मैप करें। लेकिन फिर, आप कुछ ऐसा कर रहे हैं जो ठंडा नहीं है। – DarthVader
टेस्ट क्लास और अन्य अन्य डेवलपर्स द्वारा तर्क के साथ अपने स्वयं के तरीके से उपयोग किए जाने हैं और इसलिए, मैं उन्हें केवल रचनाकारों के सरणी के रूप में तर्कों को पास करने के लिए प्रतिबंधित नहीं करना चाहता हूं। – Sarfraz