Wywołanie metody statycznej PHP ze zmienną nazwą klasy i przestrzeniami nazw
Próbuję wywołać metodę statyczną dla klasy obszaru nazw z innej klasy o tej samej przestrzeni nazw. Ale nazwa drugiej klasy jest zawarta w zmiennej:
<?php
namespace MyApp\Api;
use \Eloquent;
class Product extends Eloquent {
public static function find($id)
{
//....
}
public static function details($id)
{
$product = self::find($id);
if($product)
{
$type = $product->type; // 'Book'
$product = $type::find($product->id);
return $product;
}
}
}
Tutaj jestBook
klasa :
<?php
namespace MyApp\Api;
use \Eloquent;
class Book extends Eloquent {
public static function find($id)
{
//....
}
}
Moja zmienna typu zawiera tutaj poprawną nazwę klasyBook
. Ta klasa znajduje się w tym samym folderze i używa tej samej przestrzeni nazw. Ten kod zwraca błądClass 'Book' not found
. Próbowałem kilku odmian (z pytań SO, które znalazłem) za pomocą odwrotnych ukośników lubcall_user_func
funkcja, ale nic nie działało. Ktoś wie, co się stało?