Function literal in PHP class

后端 未结 3 1878
挽巷
挽巷 2020-12-21 08:20

Take a look at this code, please:

$array = array(
    \'action\' => function () { echo \"this works\"; }
);

class Test {
    public $array = array(
              


        
相关标签:
3条回答
  • 2020-12-21 08:55

    From the class it's a property !

    Rule from properties :

    Declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

    http://php.net/manual/en/language.oop5.properties.php

    0 讨论(0)
  • 2020-12-21 08:59

    Try it like this, let me know if this works for you

    <?php
    $array = array('action' => function () { echo "this works"; });
    class Test {
        public $arr;
        function __construct() {
            $this->arr = array("action" => function () { echo "this works too"; });
        }
        function getArr(){
            var_dump($this->arr);
        }
    }
    
    var_dump($array);
    $obj = new Test();
    $obj->getArr();
    
    0 讨论(0)
  • 2020-12-21 09:08

    I dont have chance to test Your code on PHP 5.6.6, but I think this code resolve Your problem.

    class Test{
    
        public $array;
    
        function __construct(){
    
                $this -> array = array(
    
                    'action'    =>  function (){
    
                        echo 'It works too';
                    }
                );
        }
    }
    
    $test = new Test();
    $test -> array['action']();
    
    0 讨论(0)
提交回复
热议问题