Can a method be used as an array_map function

I want to do something like this:

 class Cls {
   function fun ($ php) {
     return 'The rain in Spain.';
   }
 }

 $ ar = array (1,2,3);
 $ instance = new Cls ();
 print_r (array_map ('$ instance-> fun', $ ar));
                // ^ this won't work

but the first argument to array_map must be the name of the function. I want to avoid writing a wrapper function around $ instance-> fun, but that doesn't seem like it is possible. It's true?

+55
methods php array-map
Jul 03 '09 at 1:48
source share
3 answers

Yes, you can have callbacks to methods, for example:

array_map(array($instance, 'fun'), $ar) 

see the callback type in the PHP manual for more information

+123
Jul 03 '09 at 1:52
source share

You can also use

 array_map('Class::method', $array) 

syntax.

+30
Dec 21 '12 at 22:12
source share

In fact, you need to know the definition of Callback, please refer to the following code:

 <?php // An example callback function function my_callback_function() { echo 'hello world!'; } // An example callback method class MyClass { static function myCallbackMethod() { echo 'Hello World!'; } } $myArray = [1, 2, 3, 4]; // Type 1: Simple callback array_map('my_callback_function', $myArray); // Type 2: Static class method call array_map(array('MyClass', 'myCallbackMethod'), $myArray); // Type 3: Object method call $obj = new MyClass(); array_map(array($obj, 'myCallbackMethod'), $myArray); // Type 4: Static class method call (As of PHP 5.2.3) array_map('MyClass::myCallbackMethod', $myArray); // Type 5: Relative static class method call (As of PHP 5.3.0) class A { public static function who() { echo "A\n"; } } class B extends A { public static function who() { echo "B\n"; } } array_map(array('B', 'parent::who'), $myArray); // A ?> 

From: http://php.net/manual/en/language.types.callable.php

+8
Dec 22 '14 at 8:13
source share



All Articles