Chamada de método estático PHP com nome de classe variável e espaços para nome
Estou tentando chamar um método estático para uma classe no namespace de outra classe com o mesmo espaço para nome. Mas o nome da outra classe está contido em uma variável:
<?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;
}
}
}
Aqui está oBook
classe :
<?php
namespace MyApp\Api;
use \Eloquent;
class Book extends Eloquent {
public static function find($id)
{
//....
}
}
Minha variável de tipo contém um nome de classe válido aquiBook
. Esta classe está na mesma pasta e usa o mesmo espaço para nome. Este código retorna o erroClass 'Book' not found
. Tentei várias variações (das perguntas SO que encontrei) usando barras invertidas ou ocall_user_func
função, mas nada funcionou. Alguém sabe o que há de errado?