2

What is the difference between these codes in PHP?

code1:

$func=function($name){
         return "name : ".$name;

};
echo $func('john');// << it is true

code2:

class myclass{
         public $name;
         public $func;

}
$c=new myclass();
$c->func=function($n){
         return "name : ".$n;
};
echo $c->func();// << ?!.. is error 

The first code is working properly but the second code gives an error. How can I fix it?
Sidenote: My PHP version is 5.3.4

Funk Forty Niner
  • 74,450
  • 15
  • 68
  • 141
jvd
  • 150
  • 1
  • 7

1 Answers1

1

You can fix that using Closures in PHP.

<?php
class A {
    public $name;
    public $func;
}

$cl2 = function($n) {
     return "name : ".$n;
};


$func = Closure::bind($cl2, new A(), 'A');
echo $func('john');

OUTPUT :

name : john
Shankar Narayana Damodaran
  • 68,075
  • 43
  • 96
  • 126