Saya menghadapi masalah ini saat mencoba memperluas kelas yang ada dari GitHub. Saya akan mencoba menjelaskan diri saya sendiri, pertama menulis kelas sebagaimana saya seharusnya, dan kemudian kelas seperti sekarang.
Apa yang saya pikirkan
namespace mycompany\CutreApi;
use mycompany\CutreApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function whatever(): ClassOfVendor
{
return new ClassOfVendor();
}
}
Apa yang akhirnya saya lakukan
namespace mycompany\CutreApi;
use \vendor\AwesomeApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function whatever(): ClassOfVendor
{
return new \mycompany\CutreApi\ClassOfVendor();
}
}
Jadi tampaknya errror ini muncul juga saat Anda menggunakan metode yang mengembalikan kelas dengan namespace, dan Anda mencoba mengembalikan kelas yang sama tetapi dengan namespace lain. Untungnya saya telah menemukan solusi ini, tetapi saya tidak sepenuhnya memahami manfaat dari fitur ini di php 7.2, bagi saya itu normal untuk menulis ulang metode kelas yang ada saat Anda membutuhkannya, termasuk redefinisi parameter input dan / atau bahkan perilaku metode.
Satu kelemahan pendekatan sebelumnya, adalah bahwa IDE tidak dapat mengenali metode baru yang diterapkan di \ mycompany \ CutreApi \ ClassOfVendor (). Jadi, untuk saat ini, saya akan melakukan implementasi ini.
Saat ini selesai
namespace mycompany\CutreApi;
use mycompany\CutreApi\ClassOfVendor;
class CutreApi extends \vendor\AwesomeApi\AwesomeApi
{
public function getWhatever(): ClassOfVendor
{
return new ClassOfVendor();
}
}
Jadi, alih-alih mencoba menggunakan metode "terserah", saya menulis metode baru yang disebut "getWhatever". Faktanya keduanya melakukan hal yang sama, hanya mengembalikan kelas, tetapi dengan ruang nama yang berbeda seperti yang saya jelaskan sebelumnya.
Semoga ini bisa membantu seseorang.
function customMethod( ... )
untuk setiap fungsi kami dapat memberi tahu Anda masalah spesifiknya