CoolKid
Новичок
Допустим есть интерфейс
и абстрактный класс
также есть класс FLoader
и фасад Loader
Никаких проблем с использованием фасада нет. Например, Loader::load('myclass');
Но с автокомлитом в ПХПШторме беда, пишет что метод load не найден в классе Loader, что в принципе понятно.
В чем ошибка? В неправильной работе с фасадом? или нужно предпринять какие-то действия, чтобы ПХПШторм правильно автокомплитил код?
PHP:
interface IFacade {
public static function inst();
}
и абстрактный класс
PHP:
abstract class AFacade implements IFacade {
private function __construct() {}
private function __clone() {}
private function __sleep() {}
private function __wakeup() {}
public static function __callStatic($method_name, $arguments)
{
if(is_null(static::$inst)) static::inst();
if(method_exists(static::$inst, $method_name))
{
return call_user_func_array(array(static::$inst, $method_name), $arguments);
}
else
{
throw new Exception('Method '.$method_name.' not found in class '.get_class(static::$inst));
}
}
}
также есть класс FLoader
PHP:
class FLoader {
protected $args=array();
protected $loaded_classes=array();
public function __construct()
{
$args=func_get_args();
if(Lib::chkArr($args)) {
$this->args=$args[0];
$this->lang=$this->args[0];
}
}
public function load($class_name,$parameters=array())
{
if(!Lib::chkArrKey($class_name,$this->loaded_classes)){
$this->loaded_classes[$class_name] = $this->getNew($class_name,$parameters);
}
return $this->loaded_classes[$class_name];
}
public function getNew($class_name,$parameters=array())
{
if(class_exists($class_name)) {
return new $class_name($parameters);
} else {
throw new FException(Lang::getMessage('system.core.class_not_found',array($class_name)));
}
}
}
и фасад Loader
PHP:
final class Loader extends AFacade
{
protected static $inst=null;
public static function inst()
{
if(is_null(static::$inst))
{
if(func_num_args() > 0)
{
static::$inst=new FLoader(func_get_args());
}
else
{
static::$inst=new FLoader();
}
}
}
}
Но с автокомлитом в ПХПШторме беда, пишет что метод load не найден в классе Loader, что в принципе понятно.
В чем ошибка? В неправильной работе с фасадом? или нужно предпринять какие-то действия, чтобы ПХПШторм правильно автокомплитил код?