no pude encontrar ninguna manera de incluir o requerir clases o funciones muchas veces sin obtener un error.
De todos modos, si es necesario reemplazar las funciones dentro de una estructura que debe hacer una gama/ArrayObject funciones de lamdas/línea (como JavaScript objetos)
Cuando vuelva a importar la matriz será de nuevo a el estado original.
$Animal = array(
'eat' => function($food) {/*...*/},
'run' => function($to_place) {/*...*/}
);
$Animal['eat'] = function($food) {/* new way to eat */}
También lograron restablecer el estado de atributos estáticos mediante el uso de Reflexiones. Para este enfoque, debe usar un nombre de atributo de convención para el valor predeterminado de cada tipo.
class MyStaticHolder {
public static $x_array = array();
public static $x_num = 0;
public static $x_str = '';
}
//change values
MyStaticHolder::$x_array = array(1,2,4);
MyStaticHolder::$x_num = -1.4;
MyStaticHolder::$x_str = 'sample-text';
function reset_static($class_name) {
$z = new ReflectionClass($class_name);
$properties = $z->getDefaultProperties();
print_r($properties);
foreach ($properties as $property_name => $value) {
$sufix = end(explode('_',$property_name));
switch ($sufix) {
case 'array':
$class_name::$$property_name = array();
break;
case 'num':
$class_name::$$property_name = 0;
break;
case 'str':
$class_name::$$property_name = '';
break;
default:
$class_name::$$property_name = null;
break;
}
}
}
reset_static('MyStaticHolder');
¿Está utilizando un marco de prueba como PHPUnit? Esto se tendría en cuenta en las rutinas de configuración/desmontaje para un módulo de prueba. – Bueller