[limb-svn] r6422 - 3.x/trunk/limb/toolkit/src
svn at limb-project.com
svn at limb-project.com
Tue Oct 16 11:43:25 MSD 2007
Author: serega
Date: 2007-10-16 11:43:25 +0400 (Tue, 16 Oct 2007)
New Revision: 6422
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6422
Modified:
3.x/trunk/limb/toolkit/src/lmbToolkit.class.php
Log:
-- lmbToolkit now extends lmbObject
Modified: 3.x/trunk/limb/toolkit/src/lmbToolkit.class.php
===================================================================
--- 3.x/trunk/limb/toolkit/src/lmbToolkit.class.php 2007-10-16 07:42:54 UTC (rev 6421)
+++ 3.x/trunk/limb/toolkit/src/lmbToolkit.class.php 2007-10-16 07:43:25 UTC (rev 6422)
@@ -2,15 +2,17 @@
/*
* Limb PHP Framework
*
- * @link http://limb-project.com
+ * @link http://limb-project.com
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license LGPL http://www.gnu.org/copyleft/lesser.html
+ * @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-lmb_require(dirname(__FILE__) . '/lmbToolkitTools.interface.php');
-lmb_require(dirname(__FILE__) . '/lmbRegistry.class.php');
-lmb_require(dirname(__FILE__) . '/lmbEmptyToolkitTools.class.php');
-lmb_require(dirname(__FILE__) . '/lmbCompositeToolkitTools.class.php');
-lmb_require(dirname(__FILE__) . '/lmbCompositeNonItersectingToolkitTools.class.php');
+lmb_require('limb/toolkit/src/lmbToolkitTools.interface.php');
+lmb_require('limb/toolkit/src/lmbRegistry.class.php');
+lmb_require('limb/toolkit/src/lmbEmptyToolkitTools.class.php');
+lmb_require('limb/toolkit/src/lmbCompositeToolkitTools.class.php');
+lmb_require('limb/toolkit/src/lmbCompositeNonItersectingToolkitTools.class.php');
+lmb_require('limb/toolkit/src/lmbToolkitTools.interface.php');
+lmb_require('limb/core/src/lmbObject.class.php');
/**
* Toolkit is an implementation of Dinamic Service Locator pattern
@@ -40,17 +42,13 @@
* @package toolkit
* @version $Id$
*/
-class lmbToolkit
+class lmbToolkit extends lmbObject
{
/**
* @var lmbToolkitTools Current tools
*/
protected $tools;
/**
- * @var array Current set of toolkit data
- */
- protected $properties = array();
- /**
* @var array Cached tools signatures that is methods supported by tools
*/
protected $tools_signatures = array();
@@ -71,14 +69,6 @@
}
/**
- * Sets new set of toolkit data
- * @param array
- */
- protected function setProperties($properties)
- {
- $this->properties = $properties;
- }
- /**
* Follows Singleton pattern interface
* Returns toolkit instance. Takes instance from {@link lmbRegistry)
* If instance is not initialized yet - creates one with empty tools
@@ -150,9 +140,9 @@
lmbRegistry :: set('lmbToolkitTools', $tools);
lmbRegistry :: set('lmbToolkitToolsCopy', $tools_copy);
- lmbRegistry :: set('lmbToolkitProperties', $toolkit->properties);
+ lmbRegistry :: set('lmbToolkitProperties', $toolkit->props);
lmbRegistry :: save('lmbToolkitProperties');
- $toolkit->setProperties(array());
+ $toolkit->reset(array());
return $toolkit;
}
@@ -172,8 +162,7 @@
$tools = lmbRegistry :: get('lmbToolkitTools');
$toolkit->setTools($tools);
- $properties = lmbRegistry :: get('lmbToolkitProperties');
- $toolkit->setProperties($properties);
+ $toolkit->import(lmbRegistry :: get('lmbToolkitProperties'));
return $toolkit;
}
@@ -216,7 +205,7 @@
if($method = $this->_mapPropertyToSetMethod($var))
return $this->$method($value);
else
- $this->setRaw($var, $value);
+ return parent :: set($var, $value);
}
/**
@@ -229,30 +218,25 @@
if($method = $this->_mapPropertyToGetMethod($var))
return $this->$method();
else
- return $this->getRaw($var);
+ return parent :: get($var);
}
- /**
- * Sets variable from toolkit
- * Doesn't check if appropriate setter method in tools exists to delegate to
- * @return void
- */
function setRaw($var, $value)
{
- $this->properties[$var] = $value;
+ return parent :: _setRaw($var, $value);
}
- /**
- * Gets variable from toolkit
- * Doesn't check if appropriate getter method in tools exists to delegate to
- * @return void
- */
function getRaw($var)
{
- if(isset($this->properties[$var]))
- return $this->properties[$var];
+ return parent :: _getRaw($var);
}
+
+ function has($var)
+ {
+ return $this->_hasGetMethodFor($var) || parent :: has($var);
+ }
+
/**
* Magic caller. Delegates to {@link $tools} if $tools_signatures has required method
* @param string Method name
@@ -263,12 +247,10 @@
{
$this->_ensureSignatures();
- if(!isset($this->tools_signatures[$method]))
- throw new lmbException('toolkit does not support method "' . $method . '" (no such signature)',
- array('method' => $method));
+ if(isset($this->tools_signatures[$method]))
+ return call_user_func_array(array($this->tools_signatures[$method], $method), $args);
-
- return call_user_func_array(array($this->tools_signatures[$method], $method), $args);
+ return parent :: __call($method, $args);
}
/**
@@ -285,6 +267,15 @@
$this->signatures_loaded = true;
}
+ protected function _hasGetMethodFor($property)
+ {
+ $this->_ensureSignatures();
+
+ $capsed = lmb_camel_case($property);
+ $method = 'get' . $capsed;
+ return isset($this->tools_signatures[$method]);
+ }
+
protected function _mapPropertyToGetMethod($property)
{
$this->_ensureSignatures();
More information about the limb-svn
mailing list