Personally I don't need the strict OO checks for matching parameter
lists at all, but as long as they are E_STRICT (or the like) I have no
problem with them being done. Nevertheless I would like to relax them
just a tiny  little bit for signature changes not having an impact of
object compatibility.

I agree that allowing to extend method signature (albeit with notice) is a good thing. You could do a number of nice things with it like flexible interfaces receiving variable parameters - still staying with OO. E.g., you can do patterns like this:

abstract class Processor() {
abstract protected function process();
private function prepare() { /// do something }
public function prepare_and_process(/* variable args */) {
  $this->prepare();
  $this->process(/* some args */);
}
}

And extends it overriding only process() function having concrete arguments. Of course, not everybody wants it - some would miss strict control on process parameters - but I don't see why it should not be possible in PHP, for those who wants it. That's why PHP is a dynamic language, I think. Right now if I remove abstract from process() method I can do it - but why couldn't I do it with abstract too?

Interfaces don't exactly play nice with it since you can not add code to the interface and can not define visibility for methods.

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to