|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-04-12 21:54 UTC] richardcook at gmail dot com
Description: ------------ ReflectionClass::newInstanceArgs throws a constructor fail warning and does not create the class if the class' constructor has variable references in it Reproduce code: --------------- http://pastebin.com/f4a147910 Expected result: ---------------- Array ( [x] => 1 [y] => 2 [z] => 3 ) Foo Object ( [arr] => Array ( [x] => 1 [y] => 2 [z] => 3 ) ) Bar Object ( [foo] => Foo Object ( [arr] => Array ( [x] => 1 [y] => 2 [z] => 3 ) ) [arr] => Array ( [x] => 1 [y] => 2 [z] => 3 ) ) Actual result: -------------- Warning: Invocation of Bar's constructor failed in [code path] on line 9 Fatal error: Call to a member function mod() on a non-object in [code path] on line 36 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 02:00:01 2025 UTC |
<?php class Foo { function __construct (&$arr) { $this->arr = &$arr; } function createInstance () { $reflectionClass = new ReflectionClass("Bar"); return $reflectionClass->newInstanceArgs(array($this, $this- >arr)); } function mod($key, $val) { $this->arr[$key] = $val; } } class Bar { function __construct (&$foo, &$arr) { $this->foo = &$foo; $this->arr = &$arr; } function mod($key, $val) { $this->arr[$key] = $val; } } $arr = array(); $foo = new Foo($arr); $arr["x"] = 1; $foo->mod("y", 2); $bar = $foo->createInstance(); $bar->mod("z", 3); var_dump($arr,$foo,$bar); ?>