Annotation of embedaddon/php/ext/standard/tests/array/array_map_object3.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Test array_map() function : object functionality - class methods as callback function
        !             3: --FILE--
        !             4: <?php
        !             5: /* Prototype  : array array_map  ( callback $callback  , array $arr1  [, array $...  ] )
        !             6:  * Description: Applies the callback to the elements of the given arrays
        !             7:  * Source code: ext/standard/array.c
        !             8:  */
        !             9: 
        !            10: /*
        !            11:  * Testing array_map() for object functionality with following callback function variations:
        !            12:  *   1) child class method using parent object
        !            13:  *   2) parent class method using child object
        !            14:  *   3) child class method using parent class
        !            15:  *   4) parent class method using child class
        !            16:  */
        !            17: echo "*** Testing array_map() : class methods as callback function ***\n";
        !            18: 
        !            19: $arr1 = array(1, 5, 7);
        !            20: 
        !            21: class ParentClass
        !            22: {
        !            23:   public $var1 = 10;
        !            24:   public static function staticParent1($n) {
        !            25:     return $n;
        !            26:   }
        !            27:   private static function staticParent2($n) {
        !            28:     return $n;
        !            29:   }
        !            30: }
        !            31: 
        !            32: class ChildClass extends ParentClass 
        !            33: {
        !            34:   var $parent_obj;
        !            35:   public function __construct ( ) {
        !            36:     $this->parent_obj = new ParentClass();
        !            37:   }
        !            38:   public $var2 = 5;
        !            39:   public static function staticChild($n) {
        !            40:     return $n;
        !            41:   }
        !            42:   public function nonstaticChild($n) {
        !            43:     return $n;
        !            44:   }
        !            45: }
        !            46: 
        !            47: $childobj = new ChildClass();
        !            48: $parentobj = new ParentClass();
        !            49: 
        !            50: echo "-- accessing parent method from child class --\n";
        !            51: var_dump( array_map(array('ChildClass', 'staticParent1'), $arr1) );
        !            52: 
        !            53: echo "-- accessing child method from parent class --\n";
        !            54: var_dump( array_map(array('ParentClass', 'staticChild'), $arr1) );
        !            55: 
        !            56: echo "-- accessing parent method using child class object --\n";
        !            57: var_dump( array_map(array($childobj, 'staticParent1'), $arr1) );
        !            58: 
        !            59: echo "-- accessing child method using parent class object --\n";
        !            60: var_dump( array_map(array($parentobj, 'staticChild'), $arr1) );
        !            61: 
        !            62: echo "Done";
        !            63: ?>
        !            64: --EXPECTF--
        !            65: *** Testing array_map() : class methods as callback function ***
        !            66: -- accessing parent method from child class --
        !            67: array(3) {
        !            68:   [0]=>
        !            69:   int(1)
        !            70:   [1]=>
        !            71:   int(5)
        !            72:   [2]=>
        !            73:   int(7)
        !            74: }
        !            75: -- accessing child method from parent class --
        !            76: 
        !            77: Warning: array_map() expects parameter 1 to be a valid callback, class 'ParentClass' does not have a method 'staticChild' in %s on line %d
        !            78: NULL
        !            79: -- accessing parent method using child class object --
        !            80: array(3) {
        !            81:   [0]=>
        !            82:   int(1)
        !            83:   [1]=>
        !            84:   int(5)
        !            85:   [2]=>
        !            86:   int(7)
        !            87: }
        !            88: -- accessing child method using parent class object --
        !            89: 
        !            90: Warning: array_map() expects parameter 1 to be a valid callback, class 'ParentClass' does not have a method 'staticChild' in %s on line %d
        !            91: NULL
        !            92: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>