【发布时间】:2014-01-31 07:53:28
【问题描述】:
我正在尝试从具有相同命名空间的另一个类调用命名空间类的静态方法。但是另一个类的名称包含在一个变量中:
<?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。
我使用反斜杠或 call_user_func 函数尝试了几种变体(来自我发现的 SO 问题),但没有任何效果。
有谁知道怎么回事?
【问题讨论】:
标签: php namespaces static-methods