Думаю вам нужно использовать не массив а обьект. Тогда всё взлетит)
/**
* @property string $key;
* @property string $foreign_key;
* @property string $repository;
*/
class Helper {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
return isset($this->data[$name]) ? $this->data[$name] : null;
}
}
$test = new Helper(array(
'key'=>12,
'foreign_key'=>'id',
'repository'=>'',
));
echo $test->key;
$test->key = '23';
echo $test->key;
Ну или явно перечислить классы в доке
class C1 {
public $name;
}
class C2 {
public $age;
}
class Helper {
/**
* @var C1|C2
*/
public static $app;
}
Helper::$app->age