Все здравствуйте!
Что то не выходить правильно написать phpDoc что бы работал autocomplete в phpstorm.
Ниже приведу сам код.
П.С. Код не мой, переписать не хочется, так как есть много проектов на этом движке.
Base.php<?php
/**
* Class Base
* @property $config
* @property $request
* @property $db
*/
Class Base {
private $classes = array(
'config' => 'Config',
'request' => 'Request',
'db' => 'Database'
);
private static $objects = array();
public function __get($name)
{
// Если такой объект уже существует, возвращаем его
if(isset(self::$objects[$name]))
{
return(self::$objects[$name]);
}
// Если запрошенного API не существует - ошибка
if(!array_key_exists($name, $this->classes))
{
return null;
}
// Определяем имя нужного класса
$class = $this->classes[$name];
// Подключаем его
include_once(dirname(__FILE__).'/'.$class.'.php');
// Сохраняем для будущих обращений к нему
self::$objects[$name] = new $class();
// Возвращаем созданный объект
return self::$objects[$name];
}
}
Config.php<?php
require_once('Base.php');
class Config
{
private $vars = array();
public function __construct()
{
//....
}
//....
}
Database.php<?php
require_once('Base.php');
class Database extends Base
{
private $mysqli;
private $res;
public function __construct()
{
parent::__construct();
$this->connect();
}
public function connect() {/*....*/}
public function query() {/*....*/}
public function placehold() {/*....*/}
//....
}
Request.php<?php
require_once('Base.php');
class Request extends Base
{
public function __construct()
{
parent::__construct();
//....
}
public function method($method = null) {/*....*/}
private function stripslashes_recursive($var) {/*....*/}
//....
}
Спасибо за внимание, буду признателен за помощь.