【发布时间】:2010-12-22 21:22:23
【问题描述】:
我正在尝试使用 PHP 反射根据控制器方法中的参数类型自动动态加载模型的类文件。这是一个示例控制器方法。
<?php
class ExampleController
{
public function PostMaterial(SteelSlugModel $model)
{
//etc...
}
}
这是我目前所拥有的。
//Target the first parameter, as an example
$param = new ReflectionParameter(array('ExampleController', 'PostMaterial'), 0);
//Echo the type of the parameter
echo $param->getClass()->name;
这可行,并且输出将是“SteelSlugModel”,正如预期的那样。但是,模型的类文件可能尚未加载,并且使用 getClass() 需要定义类 - 我这样做的部分原因是自动加载控制器操作可能需要的任何模型.
有没有办法不用先加载类文件就可以得到参数类型的名字?
【问题讨论】:
-
什么是
$p?你的意思是$param? -
除非 Reflection 类在其文档中缺少重要的信息,否则我认为如果不加载该类就无法获得提示类型。
-
@simshaun:不。需要加载类,否则
getClass会抛出ReflectionException。 -
@netcoder,我知道 getClass。我基本上是在说“除非有另一种方法可以获取我不知道或在文档中找不到的提示类型”
-
@Rafe - 是的,$p 应该是 $param。已在代码中修复。
标签: php reflection