Я столкнулся с этой проблемой при попытке расширить существующий класс из GitHub. Я попытаюсь объяснить себя, сначала напишу класс так, как я думал, а затем класс таким, какой он есть сейчас.
Что я хотя
namespace mycompany\CutreApi;
use mycompany\CutreApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function whatever(): ClassOfVendor
{
return new ClassOfVendor();
}
}
Что я наконец сделал
namespace mycompany\CutreApi;
use \vendor\AwesomeApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function whatever(): ClassOfVendor
{
return new \mycompany\CutreApi\ClassOfVendor();
}
}
Похоже, что эта ошибка возникает также, когда вы используете метод, возвращающий класс с пространством имен, и пытаетесь вернуть тот же класс, но с другим пространством имен. К счастью, я нашел это решение, но я не до конца понимаю преимущества этой функции в php 7.2, для меня нормально переписывать существующие методы класса по мере необходимости, включая переопределение входных параметров и / или даже поведения метод.
Одним из недостатков предыдущего подхода является то, что IDE не могла распознать новые методы, реализованные в \ mycompany \ CutreApi \ ClassOfVendor (). Итак, пока я перейду к этой реализации.
В настоящее время сделано
namespace mycompany\CutreApi;
use mycompany\CutreApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function getWhatever(): ClassOfVendor
{
return new ClassOfVendor();
}
}
Итак, вместо того, чтобы пытаться использовать «любой» метод, я написал новый под названием «getWhatever». На самом деле они оба делают то же самое, просто возвращая класс, но с разными пространствами имен, как я описывал ранее.
Надеюсь, это кому-то поможет.
function customMethod( ... )