- print_r: documentation ( source)
- is_callable: documentation ( source)
<?php
class DIContainer {
private $properties = array();
public function __set($propertyName, $value) {
$this->properties[$propertyName] = $value;
}
public function __get($propertyName) {
return is_callable($this->properties[$propertyName]) ? $this->properties[$propertyName]($this) : $this->properties[$propertyName];
}
}
class DatabaseConnection {
public $hostname;
public $username;
private $password;
public function __construct($hostname, $username, $password) {
$this->hostname = $hostname;
$this->username = $username;
$this->password = $password;
}
}
$di = new DIContainer();
$di->databaseHostname = 'dbmaster';
$di->databaseUsername = 'user';
$di->databasePassword = '123456';
$di->databaseConnectionClass = 'DatabaseConnection';
$di->databaseConnection = function ($di) {
$className = $di->databaseConnectionClass;
return new $className($di->databaseHostname, $di->databaseUsername, $di->databasePassword);
};
$db = $di->databaseConnection;
print_r($db);