Discussion of testing theory and practice, including methodologies (such as TDD, BDD, DDD, Agile, XP) and software - anything to do with testing goes here. (Formerly "The Testing Side of Development")
PHP can use "null" as the value, just like when you try to echo $foo before it's created. That's why it's not fatal. Wrong functions names, or acess to private members on the other hand means quite simply that PHP cannot let you do what you want because there's nothing for it to call.
if we can still just ignore required params which will have a default of null?
I'm influenced by just about every other language I've used I guess.. if the constructor (or any method/function) does not fit both the name, parameters, and state (static/not static) it dies, where as PHP is the only one to not die. Ergo the parameters and state declaration are just as important as the access declaration.
Because it's "wrong" to ignore the required params, but PHP being loosely typed can just set null, but not quietly. Other languages are more strictly typed (I'm going to assume you refer to java) and wouldn't physically work if you don't pass args, because as you know, the parameters are actually part of the method signature. In PHP, the method signature is just its name.