Кстати, что-то никто из многоуважаемых пользователей, столько много читавших про ООП, не сказал, что мой способ - просто костыль. Рабочий, может даже очень неплохой, но все-таки костыль.
For convenience's sake foo.bar does the following things on the PHP layer:
- check if foo is an array and bar a valid element;
- if not, and if foo is an object, check that bar is a valid property;
- if not, and if foo is an object, check that bar is a valid method (even if bar is the constructor - use __construct() instead);
- if not, and if foo is an object, check that getBar is a valid method;
- if not, and if foo is an object, check that isBar is a valid method;
- if not, return a null value.