note 98411 deleted from function.call-user-func-array by kalle

From: Date: Sun, 18 Jul 2010 20:05:17 +0000
Subject: note 98411 deleted from function.call-user-func-array by kalle
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-170958@lists.php.net to get a copy of this message
Note Submitter: Carsten Milkau ---- What is the *proper* way to do something like this? (In short: I want a class to hide the class constructor for all but a few chosen friend classes) <?php class PackageClass { static protected function _new($class, $args) { switch (count($args)) { case 0: return new $class(); break; case 1: return new $class($args[0]); break; case 2: return new $class($args[0], $args[1]); break; case 3: return new $class($args[0], $args[1], $args[2]); break; case 4: return new $class($args[0], $args[1], $args[2], $args[3]); break; case 5: return new $class($args[0], $args[1], $args[2], $args[3], $args[4]); break; case 6: return new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]); break; } } } class UnconstructibleClass extends PackageClass { protected function __construct($msg) { print($msg); } } class ConstructingClass extends PackageClass { public function __construct() { self::_new(UnconstructibleClass, array("Und ich krieg dich doch!")); } } new ConstructingClass(); ?>

« previous php.notes (#170958) next »