I have code more or less like this:
class Foo {
public static function factory($str) {
$class = "Foo_" . $str;
return new $class;
}
}
class Foo_Bar {
public function razzle() {
print "Foo_Bar->baz() was called";
}
}
$Obj = Foo::factory('Bar');
and I would like PhpStorm to understand that $Obj
is a Foo_Bar
object, so that for example if I type $Obj->raz
, razzle()
will show up for autocompletion.
Is there any way to get this? To tell PhpStorm that the function Foo::factory($str)
returns an object of type Foo_$str
? My guess is that the answer is no.
As far as I know you can't make PHPStorm understand what Foo is giving out, because it is dynamic. However you can surely tell PHPStorm what your $Obj variable is, by putting a doc comment above it, like so:
/** @var Foo_Bar $Obj */
$Obj = Foo::factory('Bar');
Yes, you can do this if your factory is a static method. It should work fine for the examples you have provided.
More details and some basic example can be found here: http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With