Jak przekazać dowolną liczbę argumentów do konstruktora klasy za pomocą funkcji Object() zdefiniowanej poniżej?Przekazywanie argumentów konstruktorowi klasy
<?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
}
}
?>
Przyznaję, że ta funkcja może wydawać się nieco nonsensem, ale używam jej do małych rzeczy, gdzie framework może być zbyt rozdęty. A ponieważ działa jako "autoloader", konstruktor obiektów i kontener singletonowy, doskonale spełnia swoją funkcję. –
BTW, że klasa Reflection jest naprawdę przydatna, czy jest jakiś kurs na temat nowych funkcji PHP 5.3? Sprawdziłem podręcznik PHP, ale czy to ja, czy brakuje w nim dokumentacji? –
To nie ty: Dokumentacja jest dość skąpa. Będziesz musiał zrobić z http://www.php.net/oop5.reflection. Od około 5,1 (czy jest to 5,0?), Więc nie jest to nowa funkcja 5.3 – troelskn