- get_declared_classes: documentation ( source)
- print_r: documentation ( source)
- is_callable: documentation ( source)
- define: 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 {
private $username;
private $password;
public function __construct($username, $password) {
$this->username = $username;
$this->password = $password;
}
}
foreach (get_declared_classes() as $className) {
define($className, $className);
}
$di = new DIContainer();
$di->databaseUsername = 'user';
$di->databasePassword = '123456';
$di->databaseConnectionClass = DatabaseConnection;
$di->databaseConnection = function ($di) {
$className = $di->databaseConnectionClass;
return new $className($di->databaseUsername, $di->databasePassword);
};
$db = $di->databaseConnection;
print_r($db);