inheritance003.phpt 665 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. --TEST--
  2. Trait method overrides base class method and satisfies prototype
  3. --FILE--
  4. <?php
  5. error_reporting(E_ALL);
  6. abstract class Base {
  7. public abstract function sayHello(array $a);
  8. }
  9. class SubClass extends Base {
  10. public function sayHello(array $a) {
  11. echo "World!\n";
  12. }
  13. }
  14. $s = new SubClass();
  15. $s->sayHello(array());
  16. trait SayWorld {
  17. public function sayHello(Base $d) {
  18. echo 'World!';
  19. }
  20. }
  21. class MyHelloWorld extends Base {
  22. use SayWorld;
  23. }
  24. $o = new MyHelloWorld();
  25. $o->sayHello(array());
  26. ?>
  27. --EXPECTF--
  28. World!
  29. Fatal error: Declaration of SayWorld::sayHello(Base $d) must be compatible with Base::sayHello(array $a) in %s on line %d