php - Static classes vs class member access on instantiation -
in versions of php prior 5.4 used static classes instantiate object , call required function, example:
$result = foo::init()->bar();
in above example, static function init()
instantiates class in contained , returns object. provides method chaining functionality , allows me call bar()
, in 1 line of code. static function init()
looks this:
static public function init() { $object = new self(); return $object; }
now php 5.4 has added support class member access on instantiation, , instead of using static class can following:
$result = (new foo)->bar();
my question: old way of using static classes bad, , if so, why? php supports class member access on instantiation, more correct way of accessing class members after object instantiation?
if that's ->init()
does, can away (new foo)->bar();
, when go dependancy injection route, want create kind of factory 'inject depedencies' on instantiation. factory may full fledged instantiated object, or static method starters, fact of matter is: if need outside access injected class (database handlers, settings) or possibly in future, , don't want abuse globals or singletons (which kind of globals...), you'll thankfull have 1 method / class objects instantiated rather sprinkled through codebase.
Comments
Post a Comment