class Baz { protected $argument; public function __construct($argument) { $this->argument = $argument; } public function working() { return $this->argument->say() . 'Yep!'; } } /** * Define dependencies */ $dic = new IoC(); $dic->register('greeter', function () { return new FooBar(); }); $dic->register('status', function () use($dic) { return new Baz($dic->get('greeter')); }); /** * Real Usage */ $greeter = $dic->get('greeter'); print $greeter->say() . ' ' . $greeter->hello() . ' ' . $greeter->world() . PHP_EOL . '<br />'; // I say: Hello , World! $status = $dic->get('status'); // I say: Yep! print $status->working();