Bir ReflectionClass bu nasıl bir ReflectionObject bir yapı aramak ve nasıl

1 Cevap php

Ben reflectionClasses bir dizi var.

Ben bu birinden bir reflectionObject almak ve daha sonra bazı parametrelerle kurucusunu çağırmak gerekir.

Noktası (Ben zamanında bunu bileceksiniz) sınıf adını bilmeden bir nesne örneğini etmektir.

Örneğin, sadece fikrini işlemek için:

foreach (Conf::get_array() as $reflection_class) {
     //it's not right, just to render the idea
     $reflectionObject = new ReflectionObject ($reflection_class); 
     $objects[] = $reflectionObject->construct($param_1, $param_2); 
}

Başka bir örnek:

foreach (Conf::get_array() as $reflection_class) {
     $objects[] = new $reflection_class($param_1, $param_2); //not right. maybe from php 5.3?
}

1 Cevap

Bunun için ReflectionObject bir örneğini gerekmez. ReflectionClass iki yöntem vardır

public stdclass newInstance(mixed args)
public stdclass newInstanceArgs(array args)

Örnek:

<?php
class Foo {
  public function __construct($a, $b) { echo "Foo($a,$b) "; }  
}
class Bar {
  public function __construct($a, $b)  { echo "Bar($a,$b) "; }  
}

class Conf {
  public static function get_array() {
    return array(new ReflectionClass('Foo'), new ReflectionClass('Bar'));
  }
}



$args = array('A', 'B');
$object = array();
foreach (Conf::get_array() as $reflection_class) {
  $objects[] = $reflection_class->newInstanceArgs($args);
}

var_dump($objects);