[php5] Bug of feature?

Pagina: 1
Acties:

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 17-08 14:28

Apache

amateur software devver

Topicstarter
Tja, was hier wat aan het prutsen met create_function.
Nu blijkt dat zodra hij in een klasse gebruikt wordt komt met
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
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.

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


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 17:28

alienfruit

the alien you never expected

Heb je bugs.php.net al bekeken of het een bekend probleem voordat je het hier meldde?

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 17-08 14:28

Apache

amateur software devver

Topicstarter
Ja, en k'heb iets close gevonden, maar dat was ivm een crash, doelend op een daarna werkende oplossing ...

Hier crashed hij niet maar geeft hij bovenstaande error.
storing lambda functions into object properties

[update]
Heb ff een testcase gemaakt die meer lijkt op die van de bug report en die doet het ook niet, wel een andere error.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

class bleh {

    protected $functions = array();
    
    public function regfunc($name, $value){
    
        $this->functions[$name] = array($this, create_function('$test', 'return date("H\:i\:s \- d\/m\/y", $test);'));
        print(call_user_func($this->functions[$name], $value));
        
    }

}

$bleh = new bleh();
$bleh->regfunc('test', 123456789);
?>
Warning: call_user_func(bleh::): First argument is expected to be a valid callback in /home/blacky/public_html/php5-dev/callback-test.php on line 10

[ Voor 57% gewijzigd door Apache op 03-08-2003 19:44 ]

If it ain't broken it doesn't have enough features


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 17-08 14:28

Apache

amateur software devver

Topicstarter
EEEJ, ACM misbruikt z'n mod powers ... !

hier stond nl een bericht van hem met enkele edits en dan een flauw excuus :P

[update]
Aangezien ACM er zelfs niet wijs uit geraakte heb ik hem maar als bug gemeld ;)

[ Voor 39% gewijzigd door Apache op 04-08-2003 00:59 ]

If it ain't broken it doesn't have enough features


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

Is create_function een Static in de reflection-namespaces?

Ik weet dat ze nog druk in development zijn met relfection namelijk. Ze zijn hier zeg zo'n handerhalve/2 maanden geleden pas echt mee begonnen namelijk. Dus dat het een bug is zou heel erg goed mogelijk kunnen zijn. :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.