Php 为什么ReflectionParameter::isArray总是返回false?
我有一个简单的代码:Php 为什么ReflectionParameter::isArray总是返回false?,php,oop,reflection,Php,Oop,Reflection,我有一个简单的代码: <?php class TestClass { public function test_function($id, $values = array()) { $ref_met = new ReflectionMethod(__METHOD__); foreach($ref_met->getParameters() as $param) { if($param->isArray
<?php
class TestClass {
public function test_function($id, $values = array())
{
$ref_met = new ReflectionMethod(__METHOD__);
foreach($ref_met->getParameters() as $param) {
if($param->isArray()) {
echo "$param->name is an array\n";
} else {
echo "$param->name is NOT an array\n";
}
}
}
}
$t = new TestClass();
$t->test_function(5, array());
关于PHP的反射,有什么我不理解的吗?我读了又读,但我找不到任何东西告诉我我做错了什么
如果需要的话,我使用的是PHP5.4.20。因为RelectionParameter::isArray()检查方法是否需要参数是数组。如果方法默认为数组,则不会。它正在检查类型提示,而不是默认参数。如果没有提示,参数可以是任何东西,因此
isArray
检查将为false。如果没有为参数提供任何内容,则该值只是默认为空数组,但由于您的签名现在可以是任何内容
如果需要数组,则为TRUE,否则为FALSE
让你的班级像这样,这将是真的:
class TestClass {
public function test_function($id, array $values = array())
{
}
}
我猜这是一个新手,不知道可以向参数提示类型。这是仅在数组中才可能实现的,还是实际上可以在任何类型中实现?您可以键入提示对象、接口、数组或回调(可调用)。
class TestClass {
public function test_function($id, array $values = array())
{
}
}