IMO we are trying to force a strict programming here that is incompatible with PHP's loose character.
The following example for instance is very common in Java AVT programming: <?php class Window { function __construct($title) { } } class MyApplicationWindow extends Window { const VERSION = "1.1"; function __construct() { parent::__construct("My Application v." . self::VERSION"); } } ?> Furthermore with the new implementation we disallow "the PHP way for overloaded methods" using a variable parameter count: <?php class Base { function doSomething(MyClass $obj) { } } class Extended extends Base { function doSomething() { $args = func_get_args(); switch (count($args)) { case 0: return parent::doSomething(new MyClass()); case 1: if ($args[0] instanceof MyClass) { return parent::doSomething($args[0]); } return parent::doSomething(new MyClass($args[0])); default: throw new IllegalArgumentException(); } } } ?> -- Ferdinand Beyer <[EMAIL PROTECTED]> -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php