我正在尝试从另一个具有相同命名空间的类中使用变量来调用一个命名空间类的静态方法:
<?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;
}
}
}
这里是 Book
类:
<?php
namespace MyApp\Api;
use \Eloquent;
class Book extends Eloquent {
public static function find($id)
{
//....
}
}
我的类型变量包含一个有效的类名 Book
,这个类在同一文件夹中,并使用相同的命名空间。这段代码返回错误 Class 'Book' not found
。我尝试了几种变体(来自我找到的 SO 问题)使用反斜杠或 call_user_func
函数,但都没有起作用。有人知道出了什么问题吗?