पर तर्क पास करना मैं नीचे परिभाषित ऑब्जेक्ट() फ़ंक्शन का उपयोग करके कक्षा कन्स्ट्रक्टर को तर्कसंगत संख्याओं के तर्क कैसे पारित कर सकता हूं?क्लास कन्स्ट्रक्टर
<?php
/*
./index.php
*/
function Object($object)
{
static $instance = array();
if (is_file('./' . $object . '.php') === true)
{
$class = basename($object);
if (array_key_exists($class, $instance) === false)
{
if (class_exists($class, false) === false)
{
require('./' . $object . '.php');
}
/*
How can I pass custom arguments, using the
func_get_args() function to the class constructor?
$instance[$class] = new $class(func_get_arg(1), func_get_arg(2), ...);
*/
$instance[$class] = new $class();
}
return $instance[$class];
}
return false;
}
/*
How do I make this work?
*/
Object('libraries/DB', 'DATABASE', 'USERNAME', 'PASSWORD')->Query(/* Some Query */);
/*
./libraries/DB.php
*/
class DB
{
public function __construct($database, $username, $password, $host = 'localhost', $port = 3306)
{
// do stuff here
}
}
?>
मैं मानता हूं कि यह फ़ंक्शन थोड़ा बकवास प्रतीत हो सकता है लेकिन मैं इसे छोटी चीजों के लिए उपयोग करता हूं जहां एक ढांचा बहुत फूला हुआ हो सकता है। और चूंकि यह एक "ऑटोलोडर" के रूप में कार्य करता है, ऑब्जेक्ट कन्स्ट्रक्टर और सिंगलटन कंटेनर यह पूरी तरह से काम करता है। –
बीटीडब्ल्यू, कि प्रतिबिंब वर्ग वास्तव में आसान है, क्या PHP 5.3 की नई सुविधाओं पर कोई क्रैश कोर्स उपलब्ध है? मैंने PHP मैनुअल की जांच की लेकिन क्या यह मुझे है या इसमें बहुत सारे दस्तावेज की कमी है? –
यह आप नहीं है: दस्तावेज उस पर बदसूरत है। आपको http://www.php.net/oop5.reflection के साथ करना होगा। इसके अलावा, यह 5.1 के बाद से रहा है (या यह 5.0 है?), इसलिए यह 5.3 – troelskn