Enfrentei esse problema ao tentar estender uma classe existente do GitHub. Vou tentar me explicar, primeiro escrevendo a aula como pensei que deveria ser e depois a aula como está agora.
O que eu pensei
namespace mycompany\CutreApi;
use mycompany\CutreApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function whatever(): ClassOfVendor
{
return new ClassOfVendor();
}
}
O que eu finalmente fiz
namespace mycompany\CutreApi;
use \vendor\AwesomeApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function whatever(): ClassOfVendor
{
return new \mycompany\CutreApi\ClassOfVendor();
}
}
Portanto, parece que esse erro também surge quando você está usando um método que retorna uma classe com namespace e tenta retornar a mesma classe, mas com outro namespace. Felizmente eu encontrei essa solução, mas não entendo totalmente o benefício desse recurso no php 7.2, para mim é normal reescrever métodos de classe existentes conforme necessário, incluindo a redefinição de parâmetros de entrada e / ou até mesmo o comportamento do método.
Uma desvantagem da abordagem anterior é que os IDEs não podiam reconhecer os novos métodos implementados em \ mycompany \ CutreApi \ ClassOfVendor (). Então, por enquanto, irei com essa implementação.
Atualmente concluído
namespace mycompany\CutreApi;
use mycompany\CutreApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function getWhatever(): ClassOfVendor
{
return new ClassOfVendor();
}
}
Então, em vez de tentar usar o método "qualquer coisa", escrevi um novo chamado "getWhatever". Na verdade, os dois estão fazendo o mesmo, apenas retornando uma classe, mas com namespaces diferentes, conforme descrevi antes.
Espero que isso possa ajudar alguém.
function customMethod( ... )
:) para cada função, poderíamos contar a você o problema específico