Tja, was hier wat aan het prutsen met create_function.
Nu blijkt dat zodra hij in een klasse gebruikt wordt komt met
Op het eerste zicht lijkt me dit een bug. De functie moet gewoon by ref worden doorgegeven en niet opgeruimt worden oid.
Dat is ook nog het rare, de methode waarin de functie gecreeërd wordt werkt gewoon maar nadat het aan een property is toegekend niet meer.
Hier een korte testcase:
Ik dacht eerst hier te vragen wat er over dit soort van behaviour gedacht word voor ik hem op bugs.php.net plaats.
K'heb geen server met php4 meer, de php5 versie is een snapshot van eergisteren, zal vanacht nog wel eens een update proberen maar k'vrees dat dit nog niet opgelost zal zijn.
Nu blijkt dat zodra hij in een klasse gebruikt wordt komt met
Waar hij vandaan haalt dat het een member function is weet ik niet, k'heb em ook al proberen toe te voegen in classe blah of bleh maar geen verschil.Fatal error: Call to a member function test() on a non-object in /home/blacky/public_html/php5-dev/callback-test.php on line 19
Op het eerste zicht lijkt me dit een bug. De functie moet gewoon by ref worden doorgegeven en niet opgeruimt worden oid.
Dat is ook nog het rare, de methode waarin de functie gecreeërd wordt werkt gewoon maar nadat het aan een property is toegekend niet meer.
Hier een korte testcase:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| <?php class blah { protected $functions = array(); public function regfunc($name, $func){ $this->functions[$name] = $func; print($func(123456789)); } } class bleh extends blah { public function callByName($name, $value){ return $this->functions[$name]($value); } } class bleh2 { protected $functions = array(); public function __construct(){ $function = create_function('$test', 'return date("H\:i\:s \- d\/m\/y", $test);'); print($function(123456789)); $this->functions['test'] = $function; print($this->functions['test'](123456789)); // werkt al niet meer } public function test2(){ print($this->functions['test'](123456789)); } } $bleh2 = new bleh2(); // print date 2x $bleh2->test2(); // werkt niet $bleh = new bleh(); $test[0] = create_function('$test', 'return date("H\:i\:s \- d\/m\/y", $test);'); $bleh->regfunc('test', $test[0]); // print date print($test[0](123456789)); // print date print($bleh->callByName('test', 123456789)); // werkt niet ?> |
Ik dacht eerst hier te vragen wat er over dit soort van behaviour gedacht word voor ik hem op bugs.php.net plaats.
K'heb geen server met php4 meer, de php5 versie is een snapshot van eergisteren, zal vanacht nog wel eens een update proberen maar k'vrees dat dit nog niet opgelost zal zijn.
If it ain't broken it doesn't have enough features