fork download
  1. <?php
  2.  
  3. namespace AppBase {
  4.  
  5. interface ILoader {
  6. function bar();
  7. }
  8.  
  9. class App {
  10. protected $loader;
  11.  
  12. public function __construct(ILoader $loader)
  13. {
  14. $this->loader = $loader;
  15. }
  16.  
  17. public function foo() {
  18. $this->loader->bar();
  19. }
  20. }
  21.  
  22. class Loader implements ILoader {
  23. function bar() {
  24. echo 'Bark!';
  25. }
  26. }
  27. }
  28.  
  29. namespace AppExample {
  30.  
  31. class App extends \AppBase\App {}
  32.  
  33. class Loader extends \AppBase\Loader {
  34. function bar() {
  35. echo 'Huyark!';
  36. }
  37. }
  38.  
  39. }
  40.  
  41. namespace {
  42. $loader1 = new \AppBase\Loader();
  43. $app = new \AppExample\App($loader1);
  44. $app->foo();
  45.  
  46. $loader2 = new \AppExample\Loader();
  47. $app = new \AppExample\App($loader2);
  48. $app->foo();
  49. }
Success #stdin #stdout 0.02s 24448KB
stdin
Standard input is empty
stdout
Bark!Huyark!