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: | Hannes Magnusson | 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);
}
}