partizan
Новичок
Подсказки в IDE (Zend Studio) и наследование классов
Есть класс X, в нем много методов, которые возвращают екземпляр класса A. Примерно так:
Теперь созлается потомок A2 от класса A, и потомок X2 от класса X.
В классе X2 переопределяется только метод get_instance_of_A() и теперь все методы X2 возращают екземпляр класса A2, но Zend Studio по прежнему считает, что метод some_function возвращает екземпляр класса A, а не А2, а хочеться иметь актуальные подсказки для класса A2.
Если какие-то варианты решиния даной проблемы, кроме переопределения всех методов в X2?
Сильно-ли повлияет такое переобъявление на кол-во используемой оперативной памяти (если будет использоваться много подобных классов, и несколько уровней наследования)?
Некоторые из этих методов принимают довольно длинный список аргументов, можно-ли как-то сделать вызов parent::some_function() с теми же аргументами, что были переданы в some_function(), не перечисляя их? Что-то вроде
но чтоб в радительскую функцию передавались аргументы так же, как в основную, а не массивом.
И последнее - если забить на переобъявление, можно-ли в коде после присваивания переменной значения указать Zend Studio, какого типа эта переменная на самом деле, чтоб показывались правильные подсказки?
Есть класс X, в нем много методов, которые возвращают екземпляр класса A. Примерно так:
PHP:
/**
* @return A
* */
function some_function()
{
$res = $this->get_instance_of_A();
// Различные манипуляции с $res
return $res;
}
В классе X2 переопределяется только метод get_instance_of_A() и теперь все методы X2 возращают екземпляр класса A2, но Zend Studio по прежнему считает, что метод some_function возвращает екземпляр класса A, а не А2, а хочеться иметь актуальные подсказки для класса A2.
Если какие-то варианты решиния даной проблемы, кроме переопределения всех методов в X2?
PHP:
/**
* @return A2
* */
function some_function()
{
return parent::some_function();
}
Некоторые из этих методов принимают довольно длинный список аргументов, можно-ли как-то сделать вызов parent::some_function() с теми же аргументами, что были переданы в some_function(), не перечисляя их? Что-то вроде
PHP:
function some_function($a, $b, $c, $d, ...)
{
return parent::some_function(func_get_args());
}
И последнее - если забить на переобъявление, можно-ли в коде после присваивания переменной значения указать Zend Studio, какого типа эта переменная на самом деле, чтоб показывались правильные подсказки?