Edit report at http://bugs.php.net/bug.php?id=53573&edit=1

 ID:                 53573
 Comment by:         olamedia at gmail dot com
 Reported by:        kak dot serpom dot po dot yaitsam at gmail dot com
 Summary:            Invisible "static" property of Closure
 Status:             Open
 Type:               Bug
 Package:            Scripting Engine problem
 PHP Version:        5.3.4
 Block user comment: N
 Private report:     N

 New Comment:

<?php

class a{

  public $c = array();

  function __call($name, $args){

    $closure = $this->c[$name]; // example

    $self = $this;

    // how can I pass $self to closure?

    $closure->static['self'] = $this // NO!, Reflection is giving empty
array

    call_user_func_array($closure, $args);

  }

}

$a = new a();

$a->c['hello'] = function($x) use ($self){

  return 'Hello, '.$x.'! My name is '.get_class($self).'!';

};

$a->hello('php');


Previous Comments:
------------------------------------------------------------------------
[2010-12-19 06:03:08] kak dot serpom dot po dot yaitsam at gmail dot com

Description:
------------
var_dump($closure) displays public property named "static", but I cannot
access to 

it with standard call: Closure object cannot have properties

It might be very useful!

Thanks.

Test script:
---------------
<?php

$a = function() {

        static $foo = 'bar';

        echo $foo."\n";

};

var_dump($a);

$a->{'static'}['foo'] = 'foo';

$a();



Expected result:
----------------
Output: foo

Actual result:
--------------
object(Closure)#1 (1) {

  ["static"]=>

  array(1) {

    ["foo"]=>

    string(3) "bar"

  }

}

PHP Catchable fatal error:  Closure object cannot have properties in 

/home/web/1.php on line 7




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53573&edit=1

Reply via email to