php-src/ext/standard/tests/array/array_map_object1.phpt

207 lines
5.0 KiB
Plaintext
Raw Normal View History

--TEST--
Test array_map() function : usage variations - object functionality
--FILE--
<?php
/* Prototype : array array_map ( callback $callback , array $arr1 [, array $... ] )
* Description: Applies the callback to the elements of the given arrays
* Source code: ext/standard/array.c
*/
/*
* Testing array_map() for object functionalities:
* 1) simple class with variable and method
* 2) class without members
* 3) class with only one method and no variable
* 4) abstract and child class
* 5) class with static and final members
* 6) interface and implemented class
*/
echo "*** Testing array_map() : object functionality ***\n";
echo "-- simple class with public variable and method --\n";
class SimpleClass
{
public $var1 = 1;
public function square($n) {
return $n * $n;
}
}
2008-02-06 20:40:19 +00:00
function test($cb, $args) {
echo join('::', $cb) . "\n";
var_dump(array_map($cb, $args));
}
test(array('SimpleClass', 'square'), array(1, 2));
echo "\n-- simple class with private variable and method --\n";
class SimpleClassPri
{
private $var1 = 10;
private function add($n) {
return $var + $n;
}
}
2008-02-06 20:40:19 +00:00
test(array('SimpleClassPri', 'add'), array(1));
echo "\n-- simple class with protected variable and method --\n";
class SimpleClassPro
{
protected $var1 = 5;
protected function mul($n) {
return $var1 * $n;
}
}
2008-02-06 20:40:19 +00:00
test(array('SimpleClassPro', 'mul'), array(2));
2008-02-06 20:40:19 +00:00
echo "\n-- class without members --\n";
class EmptyClass
{
}
2008-02-06 20:40:19 +00:00
test(array('EmptyClass'), array(1, 2));
2008-02-06 20:40:19 +00:00
echo "\n-- abstract class --\n";
abstract class AbstractClass
{
protected $var2 = 5;
abstract function emptyFunction();
}
// class deriving the above abstract class
class ChildClass extends AbstractClass
{
private $var3;
public function emptyFunction() {
echo "defined in child\n";
}
}
2008-02-06 20:40:19 +00:00
test(array('ChildClass', 'emptyFunction'), array(1, 2));
2008-02-06 20:40:19 +00:00
echo "\n-- class with final method --\n";
class FinalClass
{
private $var4;
final function finalMethod() {
echo "This function can't be overloaded\n";
}
}
2008-02-06 20:40:19 +00:00
test(array('FinalClass', 'finalMethod'), array(1, 2));
echo "\n-- class with static members --\n";
class StaticClass
{
static $var5 = 2;
public static function square($n) {
return ($n * $n);
}
private static function cube($n) {
return ($n * $n * $n);
}
protected static function retVal($n) {
return array($n);
}
}
2008-02-06 20:40:19 +00:00
test(array('StaticClass', 'square'), array(1, 2));
test(array('StaticClass', 'cube'), array(2));
test(array('StaticClass', 'retVal'), array(3, 4));
echo "-- class implementing an interface --\n";
interface myInterface
{
public function toImplement();
}
class InterClass implements myInterface
{
public static function square($n) {
return ($n * $n);
}
public function toImplement() {
return 1;
}
}
2008-02-06 20:40:19 +00:00
test(array('InterClass', 'square'), array(1, 2));
?>
2008-02-06 20:40:19 +00:00
===DONE===
<?php exit(0); ?>
--EXPECTF--
*** Testing array_map() : object functionality ***
-- simple class with public variable and method --
2008-02-06 20:40:19 +00:00
SimpleClass::square
2008-02-06 20:40:19 +00:00
Strict Standards: array_map() expects parameter 1 to be a valid callback, non-static method SimpleClass::square() should not be called statically in %sarray_map_object1.php on line %d
array(2) {
[0]=>
int(1)
[1]=>
int(4)
}
-- simple class with private variable and method --
2008-02-06 20:40:19 +00:00
SimpleClassPri::add
2008-02-06 20:40:19 +00:00
Warning: array_map() expects parameter 1 to be a valid callback, cannot access private method SimpleClassPri::add() in %sarray_map_object1.php on line %d
NULL
-- simple class with protected variable and method --
2008-02-06 20:40:19 +00:00
SimpleClassPro::mul
2008-02-06 20:40:19 +00:00
Warning: array_map() expects parameter 1 to be a valid callback, cannot access protected method SimpleClassPro::mul() in %sarray_map_object1.php on line %d
NULL
-- class without members --
2008-02-06 20:40:19 +00:00
EmptyClass
Warning: array_map() expects parameter 1 to be a valid callback, array must have exactly two members in %sarray_map_object1.php on line %d
NULL
-- abstract class --
2008-02-06 20:40:19 +00:00
ChildClass::emptyFunction
2008-02-02 01:51:17 +00:00
2008-02-06 20:40:19 +00:00
Strict Standards: array_map() expects parameter 1 to be a valid callback, non-static method ChildClass::emptyFunction() should not be called statically in %sarray_map_object1.php on line %d
defined in child
defined in child
array(2) {
2008-02-06 20:40:19 +00:00
[0]=>
NULL
[1]=>
NULL
}
-- class with final method --
2008-02-06 20:40:19 +00:00
FinalClass::finalMethod
2008-02-02 01:51:17 +00:00
2008-02-06 20:40:19 +00:00
Strict Standards: array_map() expects parameter 1 to be a valid callback, non-static method FinalClass::finalMethod() should not be called statically in %sarray_map_object1.php on line %d
This function can't be overloaded
This function can't be overloaded
array(2) {
2008-02-06 20:40:19 +00:00
[0]=>
NULL
[1]=>
NULL
}
-- class with static members --
2008-02-06 20:40:19 +00:00
StaticClass::square
array(2) {
[0]=>
int(1)
[1]=>
int(4)
}
2008-02-06 20:40:19 +00:00
StaticClass::cube
2008-02-06 20:40:19 +00:00
Warning: array_map() expects parameter 1 to be a valid callback, cannot access private method StaticClass::cube() in %sarray_map_object1.php on line %d
NULL
2008-02-06 20:40:19 +00:00
StaticClass::retVal
2008-02-06 20:40:19 +00:00
Warning: array_map() expects parameter 1 to be a valid callback, cannot access protected method StaticClass::retVal() in %sarray_map_object1.php on line %d
NULL
-- class implementing an interface --
2008-02-06 20:40:19 +00:00
InterClass::square
array(2) {
[0]=>
int(1)
[1]=>
int(4)
}
2008-02-06 20:40:19 +00:00
===DONE===