3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface DepInterface {} class Dependency implements DepInterface { public function __construct($param1, $param2) {} } class NotDI { protected $dep; public function __construct() { // 1. if we ever change the constructor of the Dependency class we now need to // go fiddle with the implementation in every class ever. // 2. not only that, now this class needs to know the proper configuration for // its dependency, which is not necessarily something it need be responsible for // 3. we now have a hard dependency on this one, concrete implementation. $this->dep = new Dependency('foo', 'bar'); } } class IsDI { protected $dep; public function __construct(DepInterface $dep) { // Now we no longer need care how the object is instantiated, or what it even is // so long as it implements the interface that we are expecting. $this->dep = $dep; } } $dep = new Dependency('foo', 'bar'); $johnny = new IsDI($dep);
Output for git.master, git.master_jit, rfc.property-hooks

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
29.16 ms | 401 KiB | 8 Q