svn: /phd/trunk/phpdotnet/phd/ Format/Factory.php Package/Default/Factory.php Package/IDE/Factory.php Package/PHP/Factory.php Package/Pear/Factory.php

From: Date: Fri, 31 Jul 2009 12:21:15 +0000
Subject: svn: /phd/trunk/phpdotnet/phd/ Format/Factory.php Package/Default/Factory.php Package/IDE/Factory.php Package/PHP/Factory.php Package/Pear/Factory.php
Groups: php.doc.cvs 
Request: Send a blank email to doc-cvs+get-4582@lists.php.net to get a copy of this message
bjori Fri, 31 Jul 2009 12:21:15 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=286592 Log: - Make the createFactory() method a singleton too, there is no point in having multiple instanceof of these objects - Add __toString() to Factories Changed paths: U phd/trunk/phpdotnet/phd/Format/Factory.php U phd/trunk/phpdotnet/phd/Package/Default/Factory.php U phd/trunk/phpdotnet/phd/Package/IDE/Factory.php U phd/trunk/phpdotnet/phd/Package/PHP/Factory.php U phd/trunk/phpdotnet/phd/Package/Pear/Factory.php Modified: phd/trunk/phpdotnet/phd/Format/Factory.php =================================================================== --- phd/trunk/phpdotnet/phd/Format/Factory.php 2009-07-31 11:42:19 UTC (rev 286591) +++ phd/trunk/phpdotnet/phd/Format/Factory.php 2009-07-31 12:21:15 UTC (rev 286592) @@ -3,7 +3,8 @@ /* $Id$ */ abstract class Format_Factory { - private $formats = array(); + private $formats = array(); + private $packageName = ""; public final function getOutputFormats() { return array_keys($this->formats); @@ -13,6 +14,16 @@ $this->formats = $formats; } + protected final function setPackageName($name) { + if (!is_string($name)) { + throw new \Exception("Package names must be strings.."); + } + $this->packageName = $name; + } + public final function getPackageName() { + return $this->packageName; + } + public final function createFormat($format) { if (isset($this->formats[$format]) && $this->formats[$format]) { $classname = __NAMESPACE__ . "\\" . $this->formats[$format]; @@ -27,17 +38,27 @@ } public static final function createFactory($package = null) { + static $factories = array(); + if ($package === null) { $package = Config::package(); } - $classname = __NAMESPACE__ . "\\Package_" . $package . "_Factory"; - $factory = new $classname(); - if (!($factory instanceof Format_Factory)) { - throw new \Exception("All Factories must inherit Format_Factory"); + if (!isset($factories[$package])) { + $classname = __NAMESPACE__ . "\\Package_" . $package . "_Factory"; + + $factory = new $classname(); + if (!($factory instanceof Format_Factory)) { + throw new \Exception("All Factories must inherit Format_Factory"); + } + $factories[$package] = $factory; } - return $factory; + return $factories[$package]; } + + public final function __toString() { + return $this->getPackageName(); + } } /* Modified: phd/trunk/phpdotnet/phd/Package/Default/Factory.php =================================================================== --- phd/trunk/phpdotnet/phd/Package/Default/Factory.php 2009-07-31 11:42:19 UTC (rev 286591) +++ phd/trunk/phpdotnet/phd/Package/Default/Factory.php 2009-07-31 12:21:15 UTC (rev 286592) @@ -10,6 +10,7 @@ ); public function __construct() { + parent::setPackageName("Default"); parent::registerOutputFormats($this->formats); } } Modified: phd/trunk/phpdotnet/phd/Package/IDE/Factory.php =================================================================== --- phd/trunk/phpdotnet/phd/Package/IDE/Factory.php 2009-07-31 11:42:19 UTC (rev 286591) +++ phd/trunk/phpdotnet/phd/Package/IDE/Factory.php 2009-07-31 12:21:15 UTC (rev 286592) @@ -9,6 +9,7 @@ ); public function __construct() { + parent::setPackageName("IDE"); parent::registerOutputFormats($this->formats); } } Modified: phd/trunk/phpdotnet/phd/Package/PHP/Factory.php =================================================================== --- phd/trunk/phpdotnet/phd/Package/PHP/Factory.php 2009-07-31 11:42:19 UTC (rev 286591) +++ phd/trunk/phpdotnet/phd/Package/PHP/Factory.php 2009-07-31 12:21:15 UTC (rev 286592) @@ -15,6 +15,7 @@ ); public function __construct() { + parent::setPackageName("PHP"); parent::registerOutputFormats($this->formats); } } Modified: phd/trunk/phpdotnet/phd/Package/Pear/Factory.php =================================================================== --- phd/trunk/phpdotnet/phd/Package/Pear/Factory.php 2009-07-31 11:42:19 UTC (rev 286591) +++ phd/trunk/phpdotnet/phd/Package/Pear/Factory.php 2009-07-31 12:21:15 UTC (rev 286592) @@ -10,6 +10,7 @@ ); public function __construct() { + parent::setPackageName("Pear"); parent::registerOutputFormats($this->formats); } }

« previous php.doc.cvs (#4582) next »