Revision: 359
Updated Code
at July 12, 2006 05:36 by ekobudisetiyo
Updated Code
//PHP5 only
class fuselogic_container
{
var $__x = array();
function __construct($path = null)
{
static $instances = array();
$class_name = strtolower(get_class($this));
if(!isset($instances[$class_name]))
{
$instances[$class_name] = $this;
}
foreach(get_class_vars($class_name) as $var => $value)
{
$this->$var = &$instances[$class_name]->$var;
}
$this->__path = isset($path)?$path:getcwd();
}
function __get($name)
{
$lowercase = strtolower($name);
if(isset($this->__x[$lowercase]))
{
return $this->__x[$lowercase];
}else
{
$this->__x[$lowercase] = $this->$name();
$instance = &$this->__x[$lowercase];
return $instance;
}
}
function __call($name,$var)
{
if(class_exists($name))
{
if(isset($var[0]))
{
return new $name($var[0]);
}else
{
return new $name();
}
}else
{
$this->_start();
if(@include_once('class.'.$name.'.php'))
{
return new $name();
}
$this->_end();
}
}
function _start()
{
$this->__path_back = getcwd();
chdir($this->__path);
}
function _end()
{
chdir($this->__path_back);
}
function __set($name,$val)
{
$this->__x[$name] = $val;
}
function __isset($name)
{
$name = strtolower($name);
if(isset($this->__x[$name]))
{
return true;
}elseif(method_exists($this,$name))
{
return true;
}else return false;
}
}
Revision: 358
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 11, 2006 00:31 by ekobudisetiyo
Initial Code
<?php
//PHP5 only
class fuselogic_container
{
var $__x = array();
function __construct($path = null)
{
static $instances = array();
$class_name = strtolower(get_class($this));
if(!isset($instances[$class_name]))
{
$instances[$class_name] = $this;
}
foreach(get_class_vars($class_name) as $var => $value)
{
$this->$var = &$instances[$class_name]->$var;
}
$this->__path = isset($path)?$path:getcwd();
}
function __get($name)
{
$lowercase = strtolower($name);
if(isset($this->__x[$lowercase]))
{
return $this->__x[$lowercase];
}else
{
$this->__x[$lowercase] = $this->$name();
$instance = &$this->__x[$lowercase];
return $instance;
}
}
function __call($name,$var)
{
if(class_exists($name))
{
if(isset($var[0]))
{
return new $name($var[0]);
}else
{
return new $name();
}
}else
{
$this->_start();
if(@include_once('class.'.$name.'.php'))
{
return new $name();
}
$this->_end();
}
}
function _start()
{
$this->__path_back = getcwd();
chdir($this->__path);
}
function _end()
{
chdir($this->__path_back);
}
function __set($name,$val)
{
$this->__x[$name] = $val;
}
function __isset($name)
{
$name = strtolower($name);
if(isset($this->__x[$name]))
{
return true;
}elseif(method_exists($this,$name))
{
return true;
}else return false;
}
}
?>
Initial URL
Initial Description
Very usefull lite dependency injection for PHP5.
Usage:
di exends fuselogic_container()
{
function __construct()
{
parant::__construct(__FILE__);
}
}
safe this to the folder with others class with name "class.class_name.php'
then you can do like bellow
$di = new di();
$c1 = $di->class_x; //singleton
$c2 = $di->class_x; //singleton
$c3 = $di->class_x(); //not singleton
Initial Title
FuseLogic - Lite version of Dependency Injection
Initial Tags
Initial Language
PHP