mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Add new tests for class/object functions and features.
This commit is contained in:
parent
34c89a2601
commit
ee0f7bc0ac
55
ext/standard/tests/class_object/class_exists_basic_001.phpt
Normal file
55
ext/standard/tests/class_object/class_exists_basic_001.phpt
Normal file
@ -0,0 +1,55 @@
|
||||
--TEST--
|
||||
Test class_exists() function : basic functionality
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool class_exists(string classname [, bool autoload])
|
||||
* Description: Checks if the class exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing class_exists() : basic functionality ***\n";
|
||||
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
echo "Calling class_exists() on non-existent class with autoload explicitly enabled:\n";
|
||||
var_dump( class_exists('C', true) );
|
||||
echo "\nCalling class_exists() on existing class with autoload explicitly enabled:\n";
|
||||
var_dump( class_exists('stdclass', true) );
|
||||
|
||||
echo "\nCalling class_exists() on non-existent class with autoload explicitly enabled:\n";
|
||||
var_dump( class_exists('D', false) );
|
||||
echo "\nCalling class_exists() on existing class with autoload explicitly disabled:\n";
|
||||
var_dump( class_exists('stdclass', false) );
|
||||
|
||||
echo "\nCalling class_exists() on non-existent class with autoload unspecified:\n";
|
||||
var_dump( class_exists('E') );
|
||||
echo "\nCalling class_exists() on existing class with autoload unspecified:\n";
|
||||
var_dump( class_exists('stdclass') );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing class_exists() : basic functionality ***
|
||||
Calling class_exists() on non-existent class with autoload explicitly enabled:
|
||||
In __autoload(C)
|
||||
bool(false)
|
||||
|
||||
Calling class_exists() on existing class with autoload explicitly enabled:
|
||||
bool(true)
|
||||
|
||||
Calling class_exists() on non-existent class with autoload explicitly enabled:
|
||||
bool(false)
|
||||
|
||||
Calling class_exists() on existing class with autoload explicitly disabled:
|
||||
bool(true)
|
||||
|
||||
Calling class_exists() on non-existent class with autoload unspecified:
|
||||
In __autoload(E)
|
||||
bool(false)
|
||||
|
||||
Calling class_exists() on existing class with autoload unspecified:
|
||||
bool(true)
|
||||
Done
|
42
ext/standard/tests/class_object/class_exists_error_001.phpt
Normal file
42
ext/standard/tests/class_object/class_exists_error_001.phpt
Normal file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
Test class_exists() function : error conditions (wrong number of arguments)
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool class_exists(string classname [, bool autoload])
|
||||
* Description: Checks if the class exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
/**
|
||||
* Test wrong number of arguments
|
||||
*/
|
||||
|
||||
echo "*** Testing class_exists() : error conditions ***\n";
|
||||
|
||||
// Zero arguments
|
||||
echo "\n-- Testing class_exists() function with Zero arguments --\n";
|
||||
var_dump( class_exists() );
|
||||
|
||||
//Test class_exists with one more than the expected number of arguments
|
||||
echo "\n-- Testing class_exists() function with more than expected no. of arguments --\n";
|
||||
$classname = 'string_val';
|
||||
$autoload = true;
|
||||
$extra_arg = 10;
|
||||
var_dump( class_exists($classname, $autoload, $extra_arg) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing class_exists() : error conditions ***
|
||||
|
||||
-- Testing class_exists() function with Zero arguments --
|
||||
|
||||
Warning: class_exists() expects at least 1 parameter, 0 given in %s on line 16
|
||||
NULL
|
||||
|
||||
-- Testing class_exists() function with more than expected no. of arguments --
|
||||
|
||||
Warning: class_exists() expects at most 2 parameters, 3 given in %s on line 23
|
||||
NULL
|
||||
Done
|
182
ext/standard/tests/class_object/class_exists_variation_001.phpt
Normal file
182
ext/standard/tests/class_object/class_exists_variation_001.phpt
Normal file
@ -0,0 +1,182 @@
|
||||
--TEST--
|
||||
Test class_exists() function : usage variations - unexpected types for agument 1
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool class_exists(string classname [, bool autoload])
|
||||
* Description: Checks if the class exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
echo "*** Testing class_exists() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$autoload = true;
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// object data
|
||||
new stdclass(),
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for classname
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( class_exists($value, $autoload) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing class_exists() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(67)
|
||||
Error: 8 - Undefined variable: unset_var, %s(70)
|
||||
|
||||
Arg value 0
|
||||
In __autoload(0)
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
In __autoload(1)
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
In __autoload(12345)
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
In __autoload(-2345)
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
In __autoload(10.5)
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
In __autoload(-10.5)
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
In __autoload(101234567000)
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
In __autoload(1.07654321E-9)
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
In __autoload(0.5)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 1 to be string, array given, %s(77)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 1 to be string, array given, %s(77)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 1 to be string, array given, %s(77)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 1 to be string, array given, %s(77)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 1 to be string, array given, %s(77)
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
In __autoload(1)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
In __autoload(1)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(76)
|
||||
|
||||
Arg value
|
||||
Error: 2 - class_exists() expects parameter 1 to be string, object given, %s(77)
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
193
ext/standard/tests/class_object/class_exists_variation_002.phpt
Normal file
193
ext/standard/tests/class_object/class_exists_variation_002.phpt
Normal file
@ -0,0 +1,193 @@
|
||||
--TEST--
|
||||
Test class_exists() function : usage variations - unexpected types for agument 2
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool class_exists(string classname [, bool autoload])
|
||||
* Description: Checks if the class exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
echo "*** Testing class_exists() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$classname = 'string_val';
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'string',
|
||||
|
||||
// object data
|
||||
new stdclass(),
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for autoload
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( class_exists($classname, $value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing class_exists() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(71)
|
||||
Error: 8 - Undefined variable: unset_var, %s(74)
|
||||
|
||||
Arg value 0
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 2 to be boolean, array given, %s(81)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 2 to be boolean, array given, %s(81)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 2 to be boolean, array given, %s(81)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 2 to be boolean, array given, %s(81)
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
Error: 2 - class_exists() expects parameter 2 to be boolean, array given, %s(81)
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
In __autoload(string_val)
|
||||
bool(false)
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(80)
|
||||
|
||||
Arg value
|
||||
Error: 2 - class_exists() expects parameter 2 to be boolean, object given, %s(81)
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Test class_exists() function : usage variations - case sensitivity
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool class_exists(string classname [, bool autoload])
|
||||
* Description: Checks if the class exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
class caseSensitivityTest {}
|
||||
var_dump(class_exists('casesensitivitytest'));
|
||||
|
||||
echo "Done"
|
||||
?>
|
||||
--EXPECTF--
|
||||
bool(true)
|
||||
Done
|
28
ext/standard/tests/class_object/get_class_error_001.phpt
Normal file
28
ext/standard/tests/class_object/get_class_error_001.phpt
Normal file
@ -0,0 +1,28 @@
|
||||
--TEST--
|
||||
Test get_class() function : error conditions - wrong number of arguments.
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto string get_class([object object])
|
||||
* Description: Retrieves the class name
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_class() : error conditions ***\n";
|
||||
|
||||
//Test get_class with one more than the expected number of arguments
|
||||
echo "\n-- Testing get_class() function with more than expected no. of arguments --\n";
|
||||
$object = new stdclass();
|
||||
$extra_arg = 10;
|
||||
var_dump( get_class($object, $extra_arg) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_class() : error conditions ***
|
||||
|
||||
-- Testing get_class() function with more than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for get_class() in %s on line 14
|
||||
NULL
|
||||
Done
|
@ -0,0 +1,63 @@
|
||||
--TEST--
|
||||
Test get_class_methods() function : basic functionality
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_class_methods(mixed class)
|
||||
* Description: Returns an array of method names for class or class instance.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
/*
|
||||
* Test basic behaviour with existing class and non-existent class.
|
||||
*/
|
||||
|
||||
echo "*** Testing get_class_methods() : basic functionality ***\n";
|
||||
|
||||
class C {
|
||||
function f() {}
|
||||
function g() {}
|
||||
function h() {}
|
||||
}
|
||||
|
||||
echo "Argument is class name:\n";
|
||||
var_dump( get_class_methods("C") );
|
||||
echo "Argument is class instance:\n";
|
||||
$c = new C;
|
||||
var_dump( get_class_methods($c) );
|
||||
|
||||
class D {}
|
||||
echo "Argument is name of class which has no methods:\n";
|
||||
var_dump( get_class_methods("D") );
|
||||
|
||||
echo "Argument is non existent class:\n";
|
||||
var_dump( get_class_methods("NonExistent") );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_class_methods() : basic functionality ***
|
||||
Argument is class name:
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(1) "f"
|
||||
[1]=>
|
||||
string(1) "g"
|
||||
[2]=>
|
||||
string(1) "h"
|
||||
}
|
||||
Argument is class instance:
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(1) "f"
|
||||
[1]=>
|
||||
string(1) "g"
|
||||
[2]=>
|
||||
string(1) "h"
|
||||
}
|
||||
Argument is name of class which has no methods:
|
||||
array(0) {
|
||||
}
|
||||
Argument is non existent class:
|
||||
NULL
|
||||
Done
|
178
ext/standard/tests/class_object/get_class_methods_basic_002.phpt
Normal file
178
ext/standard/tests/class_object/get_class_methods_basic_002.phpt
Normal file
@ -0,0 +1,178 @@
|
||||
--TEST--
|
||||
Test get_class_methods() function : basic functionality
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_class_methods(mixed class)
|
||||
* Description: Returns an array of method names for class or class instance.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
/*
|
||||
* Test behaviour with various visibility levels.
|
||||
*/
|
||||
|
||||
class C {
|
||||
private function privC() {}
|
||||
protected function protC() {}
|
||||
public function pubC() {}
|
||||
|
||||
public static function testFromC() {
|
||||
echo "Accessing C from C:\n";
|
||||
var_dump(get_class_methods("C"));
|
||||
echo "Accessing D from C:\n";
|
||||
var_dump(get_class_methods("D"));
|
||||
echo "Accessing X from C:\n";
|
||||
var_dump(get_class_methods("X"));
|
||||
}
|
||||
}
|
||||
|
||||
class D extends C {
|
||||
private function privD() {}
|
||||
protected function protD() {}
|
||||
public function pubD() {}
|
||||
|
||||
public static function testFromD() {
|
||||
echo "Accessing C from D:\n";
|
||||
var_dump(get_class_methods("C"));
|
||||
echo "Accessing D from D:\n";
|
||||
var_dump(get_class_methods("D"));
|
||||
echo "Accessing X from D:\n";
|
||||
var_dump(get_class_methods("X"));
|
||||
}
|
||||
}
|
||||
|
||||
class X {
|
||||
private function privX() {}
|
||||
protected function protX() {}
|
||||
public function pubX() {}
|
||||
|
||||
public static function testFromX() {
|
||||
echo "Accessing C from X:\n";
|
||||
var_dump(get_class_methods("C"));
|
||||
echo "Accessing D from X:\n";
|
||||
var_dump(get_class_methods("D"));
|
||||
echo "Accessing X from X:\n";
|
||||
var_dump(get_class_methods("X"));
|
||||
}
|
||||
}
|
||||
|
||||
echo "Accessing D from global scope:\n";
|
||||
var_dump(get_class_methods("D"));
|
||||
|
||||
C::testFromC();
|
||||
D::testFromD();
|
||||
X::testFromX();
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Accessing D from global scope:
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(4) "pubD"
|
||||
[1]=>
|
||||
string(9) "testFromD"
|
||||
[2]=>
|
||||
string(4) "pubC"
|
||||
[3]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing C from C:
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(5) "privC"
|
||||
[1]=>
|
||||
string(5) "protC"
|
||||
[2]=>
|
||||
string(4) "pubC"
|
||||
[3]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing D from C:
|
||||
array(7) {
|
||||
[0]=>
|
||||
string(5) "protD"
|
||||
[1]=>
|
||||
string(4) "pubD"
|
||||
[2]=>
|
||||
string(9) "testFromD"
|
||||
[3]=>
|
||||
string(5) "privC"
|
||||
[4]=>
|
||||
string(5) "protC"
|
||||
[5]=>
|
||||
string(4) "pubC"
|
||||
[6]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing X from C:
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(4) "pubX"
|
||||
[1]=>
|
||||
string(9) "testFromX"
|
||||
}
|
||||
Accessing C from D:
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(5) "protC"
|
||||
[1]=>
|
||||
string(4) "pubC"
|
||||
[2]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing D from D:
|
||||
array(7) {
|
||||
[0]=>
|
||||
string(5) "privD"
|
||||
[1]=>
|
||||
string(5) "protD"
|
||||
[2]=>
|
||||
string(4) "pubD"
|
||||
[3]=>
|
||||
string(9) "testFromD"
|
||||
[4]=>
|
||||
string(5) "protC"
|
||||
[5]=>
|
||||
string(4) "pubC"
|
||||
[6]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing X from D:
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(4) "pubX"
|
||||
[1]=>
|
||||
string(9) "testFromX"
|
||||
}
|
||||
Accessing C from X:
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(4) "pubC"
|
||||
[1]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing D from X:
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(4) "pubD"
|
||||
[1]=>
|
||||
string(9) "testFromD"
|
||||
[2]=>
|
||||
string(4) "pubC"
|
||||
[3]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing X from X:
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(5) "privX"
|
||||
[1]=>
|
||||
string(5) "protX"
|
||||
[2]=>
|
||||
string(4) "pubX"
|
||||
[3]=>
|
||||
string(9) "testFromX"
|
||||
}
|
||||
Done
|
@ -0,0 +1,76 @@
|
||||
--TEST--
|
||||
Test get_class_methods() function : basic functionality
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_class_methods(mixed class)
|
||||
* Description: Returns an array of method names for class or class instance.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
/*
|
||||
* Test behaviour with interfaces.
|
||||
*/
|
||||
|
||||
interface I {
|
||||
public function pubI();
|
||||
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
public function pubI() {}
|
||||
|
||||
private function privC() {}
|
||||
protected function protC() {}
|
||||
public function pubC() {}
|
||||
|
||||
public static function testFromC() {
|
||||
echo "Accessing I from C:\n";
|
||||
var_dump(get_class_methods("I"));
|
||||
echo "Accessing C from C:\n";
|
||||
var_dump(get_class_methods("C"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
echo "Accessing I from global scope:\n";
|
||||
var_dump(get_class_methods("I"));
|
||||
echo "Accessing C from global scope:\n";
|
||||
var_dump(get_class_methods("C"));
|
||||
C::testFromC();
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Accessing I from global scope:
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(4) "pubI"
|
||||
}
|
||||
Accessing C from global scope:
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(4) "pubI"
|
||||
[1]=>
|
||||
string(4) "pubC"
|
||||
[2]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Accessing I from C:
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(4) "pubI"
|
||||
}
|
||||
Accessing C from C:
|
||||
array(5) {
|
||||
[0]=>
|
||||
string(4) "pubI"
|
||||
[1]=>
|
||||
string(5) "privC"
|
||||
[2]=>
|
||||
string(5) "protC"
|
||||
[3]=>
|
||||
string(4) "pubC"
|
||||
[4]=>
|
||||
string(9) "testFromC"
|
||||
}
|
||||
Done
|
@ -0,0 +1,41 @@
|
||||
--TEST--
|
||||
Test get_class_methods() function : error conditions
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_class_methods(mixed class)
|
||||
* Description: Returns an array of method names for class or class instance.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
/*
|
||||
* Test wrong number of arguments.
|
||||
*/
|
||||
|
||||
echo "*** Testing get_class_methods() : error conditions ***\n";
|
||||
|
||||
// Zero arguments
|
||||
echo "\n-- Testing get_class_methods() function with Zero arguments --\n";
|
||||
var_dump( get_class_methods() );
|
||||
|
||||
//Test get_class_methods with one more than the expected number of arguments
|
||||
echo "\n-- Testing get_class_methods() function with more than expected no. of arguments --\n";
|
||||
$class = 1;
|
||||
$extra_arg = 10;
|
||||
var_dump( get_class_methods($class, $extra_arg) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_class_methods() : error conditions ***
|
||||
|
||||
-- Testing get_class_methods() function with Zero arguments --
|
||||
|
||||
Warning: Wrong parameter count for get_class_methods() in %s on line 16
|
||||
NULL
|
||||
|
||||
-- Testing get_class_methods() function with more than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for get_class_methods() in %s on line 22
|
||||
NULL
|
||||
Done
|
@ -0,0 +1,172 @@
|
||||
--TEST--
|
||||
Test get_class_methods() function : usage variations - unexpected types
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_class_methods(mixed class)
|
||||
* Description: Returns an array of method names for class or class instance.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
echo "*** Testing get_class_methods() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'string',
|
||||
|
||||
// object data
|
||||
new stdclass(),
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for class
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( get_class_methods($value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_class_methods() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(67)
|
||||
Error: 8 - Undefined variable: unset_var, %s(70)
|
||||
|
||||
Arg value 0
|
||||
NULL
|
||||
|
||||
Arg value 1
|
||||
NULL
|
||||
|
||||
Arg value 12345
|
||||
NULL
|
||||
|
||||
Arg value -2345
|
||||
NULL
|
||||
|
||||
Arg value 10.5
|
||||
NULL
|
||||
|
||||
Arg value -10.5
|
||||
NULL
|
||||
|
||||
Arg value 101234567000
|
||||
NULL
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
NULL
|
||||
|
||||
Arg value 0.5
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
NULL
|
||||
|
||||
Arg value Array
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
|
||||
Arg value 1
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
|
||||
Arg value 1
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
|
||||
Arg value string
|
||||
NULL
|
||||
|
||||
Arg value string
|
||||
NULL
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(76)
|
||||
|
||||
Arg value
|
||||
array(0) {
|
||||
}
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
|
||||
Arg value
|
||||
NULL
|
||||
Done
|
@ -0,0 +1,34 @@
|
||||
--TEST--
|
||||
Test get_class_methods() function : usage variations - case sensitivity
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_class_methods(mixed class)
|
||||
* Description: Returns an array of method names for class or class instance.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_class_methods() : usage variations ***\n";
|
||||
|
||||
class caseSensitivityTest {
|
||||
function MyMeThOd() {}
|
||||
}
|
||||
|
||||
var_dump( get_class_methods('CasesensitivitytesT') );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_class_methods() : usage variations ***
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(8) "MyMeThOd"
|
||||
}
|
||||
Done
|
||||
--UEXPECTF--
|
||||
*** Testing get_class_methods() : usage variations ***
|
||||
array(1) {
|
||||
[0]=>
|
||||
unicode(8) "MyMeThOd"
|
||||
}
|
||||
Done
|
160
ext/standard/tests/class_object/get_class_variation_001.phpt
Normal file
160
ext/standard/tests/class_object/get_class_variation_001.phpt
Normal file
@ -0,0 +1,160 @@
|
||||
--TEST--
|
||||
Test get_class() function : usage variations - passing unexpected types.
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto string get_class([object object])
|
||||
* Description: Retrieves the class name
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_class() : usage variations ***\n";
|
||||
|
||||
// Note: basic use cases in Zend/tests/009.phpt
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'string',
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for object
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value: $value (type: " . gettype($value) . ")\n";
|
||||
var_dump( get_class($value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_class() : usage variations ***
|
||||
|
||||
Notice: Undefined variable: undefined_var in %s on line 58
|
||||
|
||||
Notice: Undefined variable: unset_var in %s on line 61
|
||||
|
||||
Arg value: 0 (type: integer)
|
||||
bool(false)
|
||||
|
||||
Arg value: 1 (type: integer)
|
||||
bool(false)
|
||||
|
||||
Arg value: 12345 (type: integer)
|
||||
bool(false)
|
||||
|
||||
Arg value: -2345 (type: integer)
|
||||
bool(false)
|
||||
|
||||
Arg value: 10.5 (type: double)
|
||||
bool(false)
|
||||
|
||||
Arg value: -10.5 (type: double)
|
||||
bool(false)
|
||||
|
||||
Arg value: 101234567000 (type: double)
|
||||
bool(false)
|
||||
|
||||
Arg value: 1.07654321E-9 (type: double)
|
||||
bool(false)
|
||||
|
||||
Arg value: 0.5 (type: double)
|
||||
bool(false)
|
||||
|
||||
Arg value: Array (type: array)
|
||||
bool(false)
|
||||
|
||||
Arg value: Array (type: array)
|
||||
bool(false)
|
||||
|
||||
Arg value: Array (type: array)
|
||||
bool(false)
|
||||
|
||||
Arg value: Array (type: array)
|
||||
bool(false)
|
||||
|
||||
Arg value: Array (type: array)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: NULL)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: NULL)
|
||||
bool(false)
|
||||
|
||||
Arg value: 1 (type: boolean)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: boolean)
|
||||
bool(false)
|
||||
|
||||
Arg value: 1 (type: boolean)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: boolean)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: string)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: string)
|
||||
bool(false)
|
||||
|
||||
Arg value: string (type: string)
|
||||
bool(false)
|
||||
|
||||
Arg value: string (type: string)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: NULL)
|
||||
bool(false)
|
||||
|
||||
Arg value: (type: NULL)
|
||||
bool(false)
|
||||
Done
|
21
ext/standard/tests/class_object/get_class_variation_002.phpt
Normal file
21
ext/standard/tests/class_object/get_class_variation_002.phpt
Normal file
@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Test get_class() function : usage variations - ensure class name case is preserved.
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto string get_class([object object])
|
||||
* Description: Retrieves the class name
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
class caseSensitivityTest {}
|
||||
var_dump(get_class(new casesensitivitytest));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(19) "caseSensitivityTest"
|
||||
Done
|
||||
--UEXPECTF--
|
||||
unicode(19) "caseSensitivityTest"
|
||||
Done
|
@ -0,0 +1,47 @@
|
||||
--TEST--
|
||||
Test get_declared_classes() function : basic functionality
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_declared_classes()
|
||||
* Description: Returns an array of all declared classes.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
|
||||
echo "*** Testing get_declared_classes() : basic functionality ***\n";
|
||||
|
||||
// Zero arguments
|
||||
echo "\n-- Testing get_declared_classes() function with Zero arguments --\n";
|
||||
var_dump(get_declared_classes());
|
||||
|
||||
foreach (get_declared_classes() as $class) {
|
||||
if (!class_exists($class)) {
|
||||
echo "Error: $class is not a valid class.\n";
|
||||
}
|
||||
}
|
||||
|
||||
echo "\n-- Ensure userspace classes are listed --\n";
|
||||
Class C {}
|
||||
var_dump(in_array('C', get_declared_classes()));
|
||||
|
||||
echo "\n-- Ensure userspace interfaces are not listed --\n";
|
||||
Interface I {}
|
||||
var_dump(in_array( 'I', get_declared_classes()));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_declared_classes() : basic functionality ***
|
||||
|
||||
-- Testing get_declared_classes() function with Zero arguments --
|
||||
array(%d) {
|
||||
%a
|
||||
}
|
||||
|
||||
-- Ensure userspace classes are listed --
|
||||
bool(true)
|
||||
|
||||
-- Ensure userspace interfaces are not listed --
|
||||
bool(false)
|
||||
Done
|
@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
Test get_declared_classes() function : error conditions
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_declared_classes()
|
||||
* Description: Returns an array of all declared classes.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_declared_classes() : error conditions ***\n";
|
||||
|
||||
// One argument
|
||||
echo "\n-- Testing get_declared_classes() function with one argument --\n";
|
||||
$extra_arg = 10;;
|
||||
var_dump( get_declared_classes($extra_arg) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_declared_classes() : error conditions ***
|
||||
|
||||
-- Testing get_declared_classes() function with one argument --
|
||||
|
||||
Warning: Wrong parameter count for get_declared_classes() in %s on line 13
|
||||
NULL
|
||||
Done
|
@ -0,0 +1,47 @@
|
||||
--TEST--
|
||||
Test get_declared_interfaces() function : basic functionality
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_declared_interfaces()
|
||||
* Description: Returns an array of all declared interfaces.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
|
||||
echo "*** Testing get_declared_interfaces() : basic functionality ***\n";
|
||||
|
||||
// Zero arguments
|
||||
echo "\n-- Testing get_declared_interfaces() function with Zero arguments --\n";
|
||||
var_dump(get_declared_interfaces());
|
||||
|
||||
foreach (get_declared_interfaces() as $interface) {
|
||||
if (!interface_exists($interface)) {
|
||||
echo "Error: $interface is not a valid interface.\n";
|
||||
}
|
||||
}
|
||||
|
||||
echo "\n-- Ensure userspace classes are not listed --\n";
|
||||
Class C {}
|
||||
var_dump(in_array('C', get_declared_interfaces()));
|
||||
|
||||
echo "\n-- Ensure userspace interfaces are listed --\n";
|
||||
Interface I {}
|
||||
var_dump(in_array('I', get_declared_interfaces()));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_declared_interfaces() : basic functionality ***
|
||||
|
||||
-- Testing get_declared_interfaces() function with Zero arguments --
|
||||
array(%d) {
|
||||
%a
|
||||
}
|
||||
|
||||
-- Ensure userspace classes are not listed --
|
||||
bool(false)
|
||||
|
||||
-- Ensure userspace interfaces are listed --
|
||||
bool(true)
|
||||
Done
|
@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
Test get_declared_interfaces() function : error conditions
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_declared_interfaces()
|
||||
* Description: Returns an array of all declared interfaces.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_declared_interfaces() : error conditions ***\n";
|
||||
|
||||
// One argument
|
||||
echo "\n-- Testing get_declared_interfaces() function with one argument --\n";
|
||||
$extra_arg = 10;;
|
||||
var_dump( get_declared_interfaces($extra_arg) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_declared_interfaces() : error conditions ***
|
||||
|
||||
-- Testing get_declared_interfaces() function with one argument --
|
||||
|
||||
Warning: Wrong parameter count for get_declared_interfaces() in %s on line 13
|
||||
NULL
|
||||
Done
|
107
ext/standard/tests/class_object/get_object_vars_basic_001.phpt
Normal file
107
ext/standard/tests/class_object/get_object_vars_basic_001.phpt
Normal file
@ -0,0 +1,107 @@
|
||||
--TEST--
|
||||
get_object_vars(): visibility from static methods (target object passed as arg)
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_object_vars(object obj)
|
||||
* Description: Returns an array of object properties
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
Class A {
|
||||
private $hiddenPriv = 'A::hiddenPriv';
|
||||
|
||||
public static function test($b) {
|
||||
echo __METHOD__ . "\n";
|
||||
var_dump(get_object_vars($b));
|
||||
}
|
||||
}
|
||||
|
||||
Class B extends A {
|
||||
private $hiddenPriv = 'B::hiddenPriv';
|
||||
private $priv = 'B::priv';
|
||||
protected $prot = 'B::prot';
|
||||
public $pub = 'B::pub';
|
||||
|
||||
public static function test($b) {
|
||||
echo __METHOD__ . "\n";
|
||||
var_dump(get_object_vars($b));
|
||||
}
|
||||
}
|
||||
|
||||
Class C extends B {
|
||||
private $hiddenPriv = 'C::hiddenPriv';
|
||||
|
||||
public static function test($b) {
|
||||
echo __METHOD__ . "\n";
|
||||
var_dump(get_object_vars($b));
|
||||
}
|
||||
}
|
||||
|
||||
Class X {
|
||||
public static function test($b) {
|
||||
echo __METHOD__ . "\n";
|
||||
var_dump(get_object_vars($b));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$b = new B;
|
||||
echo "\n---( Global scope: )---\n";
|
||||
var_dump(get_object_vars($b));
|
||||
echo "\n---( Declaring class: )---\n";
|
||||
B::test($b);
|
||||
echo "\n---( Subclass: )---\n";
|
||||
C::test($b);
|
||||
echo "\n---( Superclass: )---\n";
|
||||
A::test($b);
|
||||
echo "\n---( Unrelated class: )---\n";
|
||||
X::test($b);
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
---( Global scope: )---
|
||||
array(1) {
|
||||
["pub"]=>
|
||||
string(6) "B::pub"
|
||||
}
|
||||
|
||||
---( Declaring class: )---
|
||||
B::test
|
||||
array(4) {
|
||||
["hiddenPriv"]=>
|
||||
string(13) "B::hiddenPriv"
|
||||
["priv"]=>
|
||||
string(7) "B::priv"
|
||||
["prot"]=>
|
||||
string(7) "B::prot"
|
||||
["pub"]=>
|
||||
string(6) "B::pub"
|
||||
}
|
||||
|
||||
---( Subclass: )---
|
||||
C::test
|
||||
array(2) {
|
||||
["prot"]=>
|
||||
string(7) "B::prot"
|
||||
["pub"]=>
|
||||
string(6) "B::pub"
|
||||
}
|
||||
|
||||
---( Superclass: )---
|
||||
A::test
|
||||
array(3) {
|
||||
["prot"]=>
|
||||
string(7) "B::prot"
|
||||
["pub"]=>
|
||||
string(6) "B::pub"
|
||||
["hiddenPriv"]=>
|
||||
string(13) "A::hiddenPriv"
|
||||
}
|
||||
|
||||
---( Unrelated class: )---
|
||||
X::test
|
||||
array(1) {
|
||||
["pub"]=>
|
||||
string(6) "B::pub"
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
--TEST--
|
||||
get_object_vars(): visibility from non static methods (target object passed as arg)
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_object_vars(object obj)
|
||||
* Description: Returns an array of object properties
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
Class A {
|
||||
private $hiddenPriv = 'A::hiddenPriv';
|
||||
|
||||
public function testA($b) {
|
||||
echo __METHOD__ . "\n";
|
||||
var_dump(get_object_vars($b));
|
||||
}
|
||||
}
|
||||
|
||||
Class B extends A {
|
||||
private $hiddenPriv = 'B::hiddenPriv';
|
||||
private $priv = 'B::priv';
|
||||
protected $prot = 'B::prot';
|
||||
public $pub = 'B::pub';
|
||||
|
||||
public function testB($b) {
|
||||
echo __METHOD__ . "\n";
|
||||
var_dump(get_object_vars($b));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$b = new B;
|
||||
echo "\n---( Declaring class: )---\n";
|
||||
$b->testB($b);
|
||||
echo "\n---( Superclass: )---\n";
|
||||
$b->testA($b);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
---( Declaring class: )---
|
||||
B::testB
|
||||
array(4) {
|
||||
["hiddenPriv"]=>
|
||||
string(13) "B::hiddenPriv"
|
||||
["priv"]=>
|
||||
string(7) "B::priv"
|
||||
["prot"]=>
|
||||
string(7) "B::prot"
|
||||
["pub"]=>
|
||||
string(6) "B::pub"
|
||||
}
|
||||
|
||||
---( Superclass: )---
|
||||
A::testA
|
||||
array(3) {
|
||||
["prot"]=>
|
||||
string(7) "B::prot"
|
||||
["pub"]=>
|
||||
string(6) "B::pub"
|
||||
["hiddenPriv"]=>
|
||||
string(13) "A::hiddenPriv"
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
--TEST--
|
||||
Test get_object_vars() function : error conditions - wrong number of args
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_object_vars(object obj)
|
||||
* Description: Returns an array of object properties
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_object_vars() : error conditions ***\n";
|
||||
|
||||
// Zero arguments
|
||||
echo "\n-- Testing get_object_vars() function with Zero arguments --\n";
|
||||
var_dump( get_object_vars() );
|
||||
|
||||
//Test get_object_vars with one more than the expected number of arguments
|
||||
echo "\n-- Testing get_object_vars() function with more than expected no. of arguments --\n";
|
||||
$obj = new stdclass();
|
||||
$extra_arg = 10;
|
||||
var_dump( get_object_vars($obj, $extra_arg) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_object_vars() : error conditions ***
|
||||
|
||||
-- Testing get_object_vars() function with Zero arguments --
|
||||
|
||||
Warning: Wrong parameter count for get_object_vars() in %s on line 12
|
||||
NULL
|
||||
|
||||
-- Testing get_object_vars() function with more than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for get_object_vars() in %s on line 18
|
||||
NULL
|
||||
Done
|
@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
get_object_vars() - ensure statics are not shown
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_object_vars(object obj)
|
||||
* Description: Returns an array of object properties
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
Class A {
|
||||
public static $var = 'hello';
|
||||
}
|
||||
|
||||
$a = new A;
|
||||
var_dump(get_object_vars($a));
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(0) {
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
--TEST--
|
||||
get_object_vars() - ensure references are preserved
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_object_vars(object obj)
|
||||
* Description: Returns an array of object properties
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
$obj = new stdClass;
|
||||
var_dump(get_object_vars($obj));
|
||||
|
||||
$a='original.a';
|
||||
$obj->ref = &$a;
|
||||
$obj->val = $a;
|
||||
|
||||
$arr = get_object_vars($obj);
|
||||
var_dump($arr);
|
||||
|
||||
$arr['ref'] = 'changed.ref';
|
||||
$arr['val'] = 'changed.val';
|
||||
|
||||
var_dump($arr, $obj, $a);
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(0) {
|
||||
}
|
||||
array(2) {
|
||||
["ref"]=>
|
||||
&string(10) "original.a"
|
||||
["val"]=>
|
||||
string(10) "original.a"
|
||||
}
|
||||
array(2) {
|
||||
["ref"]=>
|
||||
&string(11) "changed.ref"
|
||||
["val"]=>
|
||||
string(11) "changed.val"
|
||||
}
|
||||
object(stdClass)#1 (2) {
|
||||
["ref"]=>
|
||||
&string(11) "changed.ref"
|
||||
["val"]=>
|
||||
string(10) "original.a"
|
||||
}
|
||||
string(11) "changed.ref"
|
@ -0,0 +1,158 @@
|
||||
--TEST--
|
||||
Test get_object_vars() function : usage variations - unexpected types for argument 1
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto array get_object_vars(object obj)
|
||||
* Description: Returns an array of object properties
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_object_vars() : usage variations ***\n";
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'string',
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for obj
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( get_object_vars($value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_object_vars() : usage variations ***
|
||||
|
||||
Notice: Undefined variable: undefined_var in %s on line 56
|
||||
|
||||
Notice: Undefined variable: unset_var in %s on line 59
|
||||
|
||||
Arg value 0
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
@ -0,0 +1,29 @@
|
||||
--TEST--
|
||||
Test get_parent_class() function : error conditions - wrong number of args.
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto string get_parent_class([mixed object])
|
||||
* Description: Retrieves the parent class name for object or class or current scope.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing get_parent_class() : error conditions ***\n";
|
||||
|
||||
|
||||
//Test get_parent_class with one more than the expected number of arguments
|
||||
echo "\n-- Testing get_parent_class() function with more than expected no. of arguments --\n";
|
||||
$object = 1;
|
||||
$extra_arg = 10;
|
||||
var_dump( get_parent_class($object, $extra_arg) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_parent_class() : error conditions ***
|
||||
|
||||
-- Testing get_parent_class() function with more than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for get_parent_class() in %s on line 15
|
||||
NULL
|
||||
Done
|
@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
Test get_parent_class() function : variation - case sensitivity
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto string get_parent_class([mixed object])
|
||||
* Description: Retrieves the parent class name for object or class or current scope.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
// Note: basic use cases in Zend/tests/010.phpt
|
||||
|
||||
echo "*** Testing get_parent_class() : variation ***\n";
|
||||
|
||||
class caseSensitivityTest {}
|
||||
class caseSensitivityTestChild extends caseSensitivityTest {}
|
||||
|
||||
var_dump(get_parent_class('CasesensitivitytestCHILD'));
|
||||
var_dump(get_parent_class(new CasesensitivitytestCHILD));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_parent_class() : variation ***
|
||||
string(19) "caseSensitivityTest"
|
||||
string(19) "caseSensitivityTest"
|
||||
Done
|
@ -0,0 +1,174 @@
|
||||
--TEST--
|
||||
Test get_parent_class() function : usage variations - unexpected argument type.
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto string get_parent_class([mixed object])
|
||||
* Description: Retrieves the parent class name for object or class or current scope.
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
echo "*** Testing get_parent_class() : usage variations ***\n";
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'String',
|
||||
|
||||
// object data
|
||||
new stdclass(),
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for object
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( get_parent_class($value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing get_parent_class() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(68)
|
||||
Error: 8 - Undefined variable: unset_var, %s(71)
|
||||
|
||||
Arg value 0
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
In __autoload(string)
|
||||
bool(false)
|
||||
|
||||
Arg value String
|
||||
In __autoload(String)
|
||||
bool(false)
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(77)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
46
ext/standard/tests/class_object/is_a_error_001.phpt
Normal file
46
ext/standard/tests/class_object/is_a_error_001.phpt
Normal file
@ -0,0 +1,46 @@
|
||||
--TEST--
|
||||
Test is_a() function : error conditions - wrong number of args
|
||||
--INI--
|
||||
error_reporting=E_ALL | E_STRICT | E_DEPRECATED
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_a(object object, string class_name)
|
||||
* Description: Returns true if the object is of this class or has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing is_a() : error conditions ***\n";
|
||||
|
||||
|
||||
//Test is_a with one more than the expected number of arguments
|
||||
echo "\n-- Testing is_a() function with more than expected no. of arguments --\n";
|
||||
$object = new stdclass();
|
||||
$class_name = 'string_val';
|
||||
$extra_arg = 10;
|
||||
var_dump( is_a($object, $class_name, $extra_arg) );
|
||||
|
||||
// Testing is_a with one less than the expected number of arguments
|
||||
echo "\n-- Testing is_a() function with less than expected no. of arguments --\n";
|
||||
$object = new stdclass();
|
||||
var_dump( is_a($object) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_a() : error conditions ***
|
||||
|
||||
-- Testing is_a() function with more than expected no. of arguments --
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 16
|
||||
|
||||
Warning: Wrong parameter count for is_a() in %s on line 16
|
||||
NULL
|
||||
|
||||
-- Testing is_a() function with less than expected no. of arguments --
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 21
|
||||
|
||||
Warning: Wrong parameter count for is_a() in %s on line 21
|
||||
NULL
|
||||
Done
|
215
ext/standard/tests/class_object/is_a_variation_001.phpt
Normal file
215
ext/standard/tests/class_object/is_a_variation_001.phpt
Normal file
@ -0,0 +1,215 @@
|
||||
--TEST--
|
||||
Test is_a() function : usage variations - wrong type for arg 1
|
||||
--INI--
|
||||
error_reporting=E_ALL | E_STRICT | E_DEPRECATED
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_a(object object, string class_name)
|
||||
* Description: Returns true if the object is of this class or has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
// Note: basic use cases in Zend/tests/is_a.phpt
|
||||
echo "*** Testing is_a() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$class_name = 'stdClass';
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'String',
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for object
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( is_a($value, $class_name) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_a() : usage variations ***
|
||||
|
||||
Notice: Undefined variable: undefined_var in %s on line 59
|
||||
|
||||
Notice: Undefined variable: unset_var in %s on line 62
|
||||
|
||||
Arg value 0
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value String
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 69
|
||||
bool(false)
|
||||
Done
|
225
ext/standard/tests/class_object/is_a_variation_002.phpt
Normal file
225
ext/standard/tests/class_object/is_a_variation_002.phpt
Normal file
@ -0,0 +1,225 @@
|
||||
--TEST--
|
||||
Test is_a() function : usage variations - wrong type for arg 2
|
||||
--INI--
|
||||
error_reporting=E_ALL | E_STRICT | E_DEPRECATED
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_a(object object, string class_name)
|
||||
* Description: Returns true if the object is of this class or has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
class C {
|
||||
function __toString() {
|
||||
return "C Instance";
|
||||
}
|
||||
}
|
||||
|
||||
echo "*** Testing is_a() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$object = new stdclass();
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// object data
|
||||
new C,
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for class_name
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( is_a($object, $value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_a() : usage variations ***
|
||||
|
||||
Notice: Undefined variable: undefined_var in %s on line 64
|
||||
|
||||
Notice: Undefined variable: unset_var in %s on line 67
|
||||
|
||||
Arg value 0
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
|
||||
Notice: Array to string conversion in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
|
||||
Notice: Array to string conversion in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
|
||||
Notice: Array to string conversion in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
|
||||
Notice: Array to string conversion in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
|
||||
Notice: Array to string conversion in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value C Instance
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 74
|
||||
bool(false)
|
||||
Done
|
27
ext/standard/tests/class_object/is_a_variation_003.phpt
Normal file
27
ext/standard/tests/class_object/is_a_variation_003.phpt
Normal file
@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
Test is_a() function : usage variations - case sensitivity
|
||||
--INI--
|
||||
error_reporting=E_ALL | E_STRICT | E_DEPRECATED
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_a(object object, string class_name)
|
||||
* Description: Returns true if the object is of this class or has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing is_a() : usage variations ***\n";
|
||||
|
||||
class caseSensitivityTest {}
|
||||
class caseSensitivityTestChild extends caseSensitivityTest {}
|
||||
|
||||
var_dump(is_a(new caseSensitivityTestChild, 'caseSensitivityTEST'));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_a() : usage variations ***
|
||||
|
||||
Deprecated: is_a(): Deprecated. Please use the instanceof operator in %s on line 13
|
||||
bool(true)
|
||||
Done
|
@ -0,0 +1,40 @@
|
||||
--TEST--
|
||||
Test is_subclass_of() function : wrong number of args
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_subclass_of(object object, string class_name)
|
||||
* Description: Returns true if the object has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing is_subclass_of() : error conditions ***\n";
|
||||
|
||||
|
||||
//Test is_subclass_of with one more than the expected number of arguments
|
||||
echo "\n-- Testing is_subclass_of() function with more than expected no. of arguments --\n";
|
||||
$object = new stdclass();
|
||||
$class_name = 'string_val';
|
||||
$extra_arg = 10;
|
||||
var_dump( is_subclass_of($object, $class_name, $extra_arg) );
|
||||
|
||||
// Testing is_subclass_of with one less than the expected number of arguments
|
||||
echo "\n-- Testing is_subclass_of() function with less than expected no. of arguments --\n";
|
||||
$object = new stdclass();
|
||||
var_dump( is_subclass_of($object) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_subclass_of() : error conditions ***
|
||||
|
||||
-- Testing is_subclass_of() function with more than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for is_subclass_of() in %s on line 16
|
||||
NULL
|
||||
|
||||
-- Testing is_subclass_of() function with less than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for is_subclass_of() in %s on line 21
|
||||
NULL
|
||||
Done
|
@ -0,0 +1,175 @@
|
||||
--TEST--
|
||||
Test is_subclass_of() function : usage variations - unexpected type for arg 1
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_subclass_of(object object, string class_name)
|
||||
* Description: Returns true if the object has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
// Note: basic use cases in Zend/tests/is_a.phpt
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
|
||||
echo "*** Testing is_subclass_of() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$class_name = 'string_val';
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'String',
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for object
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( is_subclass_of($value, $class_name) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_subclass_of() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(69)
|
||||
Error: 8 - Undefined variable: unset_var, %s(72)
|
||||
|
||||
Arg value 0
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
Error: 2 - Unknown class passed as parameter, %s(79)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
Error: 2 - Unknown class passed as parameter, %s(79)
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
In __autoload(string)
|
||||
Error: 2 - Unknown class passed as parameter, %s(79)
|
||||
bool(false)
|
||||
|
||||
Arg value String
|
||||
In __autoload(String)
|
||||
Error: 2 - Unknown class passed as parameter, %s(79)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
@ -0,0 +1,172 @@
|
||||
--TEST--
|
||||
Test is_subclass_of() function : usage variations - unexpected type for arg 2
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_subclass_of(object object, string class_name)
|
||||
* Description: Returns true if the object has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
echo "*** Testing is_subclass_of() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$object = new stdclass();
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// object data
|
||||
new stdclass(),
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for class_name
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( is_subclass_of($object, $value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_subclass_of() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(67)
|
||||
Error: 8 - Undefined variable: unset_var, %s(70)
|
||||
|
||||
Arg value 0
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(76)
|
||||
|
||||
Arg value
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(77)
|
||||
Error: 8 - Object of class stdClass to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
Test is_subclass_of() function : usage variations - case sensitivity
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_subclass_of(object object, string class_name)
|
||||
* Description: Returns true if the object has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing is_subclass_of() : usage variations ***\n";
|
||||
|
||||
echo "*** Testing is_a() : usage variations ***\n";
|
||||
|
||||
class caseSensitivityTest {}
|
||||
class caseSensitivityTestChild extends caseSensitivityTest {}
|
||||
|
||||
var_dump(is_subclass_of('caseSensitivityTestCHILD', 'caseSensitivityTEST'));
|
||||
|
||||
echo "Done"
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing is_subclass_of() : usage variations ***
|
||||
*** Testing is_a() : usage variations ***
|
||||
bool(true)
|
||||
Done
|
83
ext/standard/tests/class_object/method_exists_basic_001.phpt
Normal file
83
ext/standard/tests/class_object/method_exists_basic_001.phpt
Normal file
@ -0,0 +1,83 @@
|
||||
--TEST--
|
||||
method_exists() on userspace classes; static & non-static methods with various visibilities.
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_subclass_of(object object, string class_name)
|
||||
* Description: Returns true if the object has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
Class B {
|
||||
public function inherit_pub() {}
|
||||
protected function inherit_prot() {}
|
||||
private function inherit_priv() {}
|
||||
static public function inherit_static_pub() {}
|
||||
static protected function inherit_static_prot() {}
|
||||
static private function inherit_static_priv() {}
|
||||
}
|
||||
|
||||
Class C extends B {
|
||||
public function pub() {}
|
||||
protected function prot() {}
|
||||
private function priv() {}
|
||||
static public function static_pub() {}
|
||||
static protected function static_prot() {}
|
||||
static private function static_priv() {}
|
||||
}
|
||||
|
||||
|
||||
$methods = array(
|
||||
'inherit_pub', 'inherit_prot', 'inherit_priv',
|
||||
'inherit_static_pub', 'inherit_static_prot', 'inherit_static_priv',
|
||||
'pub', 'prot', 'priv',
|
||||
'static_pub', 'static_prot', 'static_priv',
|
||||
'non_existent');
|
||||
|
||||
echo "\n ---(Using string class name)---\n";
|
||||
foreach ($methods as $method) {
|
||||
echo "Does C::$method exist? ";
|
||||
var_dump(method_exists("C", $method));
|
||||
}
|
||||
|
||||
echo "\n ---(Using object)---\n";
|
||||
$myC = new C;
|
||||
foreach ($methods as $method) {
|
||||
echo "Does C::$method exist? ";
|
||||
var_dump(method_exists($myC, $method));
|
||||
}
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
---(Using string class name)---
|
||||
Does C::inherit_pub exist? bool(true)
|
||||
Does C::inherit_prot exist? bool(true)
|
||||
Does C::inherit_priv exist? bool(true)
|
||||
Does C::inherit_static_pub exist? bool(true)
|
||||
Does C::inherit_static_prot exist? bool(true)
|
||||
Does C::inherit_static_priv exist? bool(true)
|
||||
Does C::pub exist? bool(true)
|
||||
Does C::prot exist? bool(true)
|
||||
Does C::priv exist? bool(true)
|
||||
Does C::static_pub exist? bool(true)
|
||||
Does C::static_prot exist? bool(true)
|
||||
Does C::static_priv exist? bool(true)
|
||||
Does C::non_existent exist? bool(false)
|
||||
|
||||
---(Using object)---
|
||||
Does C::inherit_pub exist? bool(true)
|
||||
Does C::inherit_prot exist? bool(true)
|
||||
Does C::inherit_priv exist? bool(true)
|
||||
Does C::inherit_static_pub exist? bool(true)
|
||||
Does C::inherit_static_prot exist? bool(true)
|
||||
Does C::inherit_static_priv exist? bool(true)
|
||||
Does C::pub exist? bool(true)
|
||||
Does C::prot exist? bool(true)
|
||||
Does C::priv exist? bool(true)
|
||||
Does C::static_pub exist? bool(true)
|
||||
Does C::static_prot exist? bool(true)
|
||||
Does C::static_priv exist? bool(true)
|
||||
Does C::non_existent exist? bool(false)
|
||||
Done
|
33
ext/standard/tests/class_object/method_exists_basic_002.phpt
Normal file
33
ext/standard/tests/class_object/method_exists_basic_002.phpt
Normal file
@ -0,0 +1,33 @@
|
||||
--TEST--
|
||||
method_exists() on internal classes
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_subclass_of(object object, string class_name)
|
||||
* Description: Returns true if the object has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo " ---(Internal classes, using string class name)---\n";
|
||||
echo "Does exception::getmessage exist? ";
|
||||
var_dump(method_exists("exception", "getmessage"));
|
||||
echo "Does stdclass::nonexistent exist? ";
|
||||
var_dump(method_exists("stdclass", "nonexistent"));
|
||||
|
||||
echo "\n ---(Internal classes, using class instance)---\n";
|
||||
echo "Does exception::getmessage exist? ";
|
||||
var_dump(method_exists(new exception, "getmessage"));
|
||||
echo "Does stdclass::nonexistent exist? ";
|
||||
var_dump(method_exists(new stdclass, "nonexistent"));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
---(Internal classes, using string class name)---
|
||||
Does exception::getmessage exist? bool(true)
|
||||
Does stdclass::nonexistent exist? bool(false)
|
||||
|
||||
---(Internal classes, using class instance)---
|
||||
Does exception::getmessage exist? bool(true)
|
||||
Does stdclass::nonexistent exist? bool(false)
|
||||
Done
|
22
ext/standard/tests/class_object/method_exists_basic_003.phpt
Normal file
22
ext/standard/tests/class_object/method_exists_basic_003.phpt
Normal file
@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
method_exists() on non-existent class, with __autoload().
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool is_subclass_of(object object, string class_name)
|
||||
* Description: Returns true if the object has this class as one of its parents
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
function __autoload($name) {
|
||||
echo "In __autoload($name)\n";
|
||||
}
|
||||
|
||||
var_dump(method_exists('UndefC', 'func'));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
In __autoload(UndefC)
|
||||
bool(false)
|
||||
Done
|
40
ext/standard/tests/class_object/method_exists_error_001.phpt
Normal file
40
ext/standard/tests/class_object/method_exists_error_001.phpt
Normal file
@ -0,0 +1,40 @@
|
||||
--TEST--
|
||||
Test method_exists() function : error conditions - wrong number of args
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool method_exists(object object, string method)
|
||||
* Description: Checks if the class method exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing method_exists() : error conditions ***\n";
|
||||
|
||||
|
||||
//Test method_exists with one more than the expected number of arguments
|
||||
echo "\n-- Testing method_exists() function with more than expected no. of arguments --\n";
|
||||
$object = new stdclass();
|
||||
$method = 'string_val';
|
||||
$extra_arg = 10;
|
||||
var_dump( method_exists($object, $method, $extra_arg) );
|
||||
|
||||
// Testing method_exists with one less than the expected number of arguments
|
||||
echo "\n-- Testing method_exists() function with less than expected no. of arguments --\n";
|
||||
$object = new stdclass();
|
||||
var_dump( method_exists($object) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing method_exists() : error conditions ***
|
||||
|
||||
-- Testing method_exists() function with more than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for method_exists() in %s on line 16
|
||||
NULL
|
||||
|
||||
-- Testing method_exists() function with less than expected no. of arguments --
|
||||
|
||||
Warning: Wrong parameter count for method_exists() in %s on line 21
|
||||
NULL
|
||||
Done
|
170
ext/standard/tests/class_object/method_exists_variation_001.phpt
Normal file
170
ext/standard/tests/class_object/method_exists_variation_001.phpt
Normal file
@ -0,0 +1,170 @@
|
||||
--TEST--
|
||||
Test method_exists() function : usage variations - unexpected type for arg 1
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool method_exists(object object, string method)
|
||||
* Description: Checks if the class method exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
echo "*** Testing method_exists() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$method = 'string_val';
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// string data
|
||||
"string",
|
||||
'String',
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for object
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( method_exists($value, $method) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing method_exists() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(68)
|
||||
Error: 8 - Undefined variable: unset_var, %s(71)
|
||||
|
||||
Arg value 0
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value string
|
||||
In __autoload(string)
|
||||
bool(false)
|
||||
|
||||
Arg value String
|
||||
In __autoload(String)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
172
ext/standard/tests/class_object/method_exists_variation_002.phpt
Normal file
172
ext/standard/tests/class_object/method_exists_variation_002.phpt
Normal file
@ -0,0 +1,172 @@
|
||||
--TEST--
|
||||
Test method_exists() function : usage variations - unexpected type for arg 2
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool method_exists(object object, string method)
|
||||
* Description: Checks if the class method exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
function __autoload($className) {
|
||||
echo "In __autoload($className)\n";
|
||||
}
|
||||
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg, $filename($linenum)\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
|
||||
echo "*** Testing method_exists() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted (if any)
|
||||
$object = new stdclass();
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
//array of values to iterate over
|
||||
$values = array(
|
||||
|
||||
// int data
|
||||
0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
10.5,
|
||||
-10.5,
|
||||
10.1234567e10,
|
||||
10.7654321E-10,
|
||||
.5,
|
||||
|
||||
// array data
|
||||
array(),
|
||||
array(0),
|
||||
array(1),
|
||||
array(1, 2),
|
||||
array('color' => 'red', 'item' => 'pen'),
|
||||
|
||||
// null data
|
||||
NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
"",
|
||||
'',
|
||||
|
||||
// object data
|
||||
new stdclass(),
|
||||
|
||||
// undefined data
|
||||
$undefined_var,
|
||||
|
||||
// unset data
|
||||
$unset_var,
|
||||
);
|
||||
|
||||
// loop through each element of the array for method
|
||||
|
||||
foreach($values as $value) {
|
||||
echo "\nArg value $value \n";
|
||||
var_dump( method_exists($object, $value) );
|
||||
};
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing method_exists() : usage variations ***
|
||||
Error: 8 - Undefined variable: undefined_var, %s(67)
|
||||
Error: 8 - Undefined variable: unset_var, %s(70)
|
||||
|
||||
Arg value 0
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value 12345
|
||||
bool(false)
|
||||
|
||||
Arg value -2345
|
||||
bool(false)
|
||||
|
||||
Arg value 10.5
|
||||
bool(false)
|
||||
|
||||
Arg value -10.5
|
||||
bool(false)
|
||||
|
||||
Arg value 101234567000
|
||||
bool(false)
|
||||
|
||||
Arg value 1.07654321E-9
|
||||
bool(false)
|
||||
|
||||
Arg value 0.5
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value Array
|
||||
Error: 8 - Array to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value 1
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(76)
|
||||
|
||||
Arg value
|
||||
Error: 4096 - Object of class stdClass could not be converted to string, %s(77)
|
||||
Error: 8 - Object of class stdClass to string conversion, %s(77)
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
|
||||
Arg value
|
||||
bool(false)
|
||||
Done
|
@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
Test method_exists() function : variation - Case sensitivity
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : proto bool method_exists(object object, string method)
|
||||
* Description: Checks if the class method exists
|
||||
* Source code: Zend/zend_builtin_functions.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing method_exists() : variation ***\n";
|
||||
|
||||
Class caseSensitivityTest {
|
||||
public function myMethod() {}
|
||||
}
|
||||
|
||||
var_dump(method_exists(new casesensitivitytest, 'myMetHOD'));
|
||||
var_dump(method_exists('casesensiTivitytest', 'myMetHOD'));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing method_exists() : variation ***
|
||||
bool(true)
|
||||
bool(true)
|
||||
Done
|
41
tests/classes/__call_004.phpt
Normal file
41
tests/classes/__call_004.phpt
Normal file
@ -0,0 +1,41 @@
|
||||
--TEST--
|
||||
When __call() is invoked via ::, ensure current scope's __call() is favoured over the specified class's __call().
|
||||
--FILE--
|
||||
<?php
|
||||
class A {
|
||||
function __call($strMethod, $arrArgs) {
|
||||
echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n";
|
||||
var_dump($this);
|
||||
}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
function __call($strMethod, $arrArgs) {
|
||||
echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n";
|
||||
var_dump($this);
|
||||
}
|
||||
|
||||
function test() {
|
||||
A::test1(1,'a');
|
||||
B::test2(1,'a');
|
||||
self::test3(1,'a');
|
||||
parent::test4(1,'a');
|
||||
}
|
||||
}
|
||||
|
||||
$b = new B();
|
||||
$b->test();
|
||||
?>
|
||||
--EXPECTF--
|
||||
In B::__call(test1, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
||||
In B::__call(test2, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
||||
In B::__call(test3, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
||||
In B::__call(test4, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
36
tests/classes/__call_005.phpt
Normal file
36
tests/classes/__call_005.phpt
Normal file
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
When __call() is invoked via ::, ensure private implementation of __call() in superclass is accessed without error.
|
||||
--FILE--
|
||||
<?php
|
||||
class A {
|
||||
private function __call($strMethod, $arrArgs) {
|
||||
echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n";
|
||||
var_dump($this);
|
||||
}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
function test() {
|
||||
A::test1(1,'a');
|
||||
B::test2(1,'a');
|
||||
self::test3(1,'a');
|
||||
parent::test4(1,'a');
|
||||
}
|
||||
}
|
||||
|
||||
$b = new B();
|
||||
$b->test();
|
||||
?>
|
||||
--EXPECTF--
|
||||
In A::__call(test1, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
||||
In A::__call(test2, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
||||
In A::__call(test3, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
||||
In A::__call(test4, array(1,a))
|
||||
object(B)#1 (0) {
|
||||
}
|
17
tests/classes/interface_constant_inheritance_001.phpt
Normal file
17
tests/classes/interface_constant_inheritance_001.phpt
Normal file
@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Ensure an interface may not shadow an inherited constant.
|
||||
--FILE--
|
||||
<?php
|
||||
interface I1 {
|
||||
const FOO = 10;
|
||||
}
|
||||
|
||||
interface I2 extends I1 {
|
||||
const FOO = 10;
|
||||
}
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
Fatal error: Cannot inherit previously-inherited constant FOO from interface I1 in %s on line 6
|
17
tests/classes/interface_constant_inheritance_002.phpt
Normal file
17
tests/classes/interface_constant_inheritance_002.phpt
Normal file
@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Ensure a class may not shadow a constant inherited from an interface.
|
||||
--FILE--
|
||||
<?php
|
||||
interface I {
|
||||
const FOO = 10;
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
const FOO = 10;
|
||||
}
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
Fatal error: Cannot inherit previously-inherited constant FOO from interface I in %s on line 6
|
20
tests/classes/interface_constant_inheritance_003.phpt
Normal file
20
tests/classes/interface_constant_inheritance_003.phpt
Normal file
@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Ensure a class may not inherit two constants with the same name from two separate interfaces.
|
||||
--FILE--
|
||||
<?php
|
||||
interface I1 {
|
||||
const FOO = 10;
|
||||
}
|
||||
|
||||
interface I2 {
|
||||
const FOO = 10;
|
||||
}
|
||||
|
||||
class C implements I1,I2 {
|
||||
}
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
Fatal error: Cannot inherit previously-inherited constant FOO from interface I2 in %s on line 10
|
18
tests/classes/interface_constant_inheritance_004.phpt
Normal file
18
tests/classes/interface_constant_inheritance_004.phpt
Normal file
@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Ensure a class may implement two interfaces which include the same constant (due to inheritance).
|
||||
--FILE--
|
||||
<?php
|
||||
interface IA {
|
||||
const FOO = 10;
|
||||
}
|
||||
|
||||
interface IB extends IA {
|
||||
}
|
||||
|
||||
class C implements IA, IB {
|
||||
}
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Done
|
56
tests/classes/tostring_004.phpt
Normal file
56
tests/classes/tostring_004.phpt
Normal file
@ -0,0 +1,56 @@
|
||||
--TEST--
|
||||
Object to string conversion: error cases and behaviour variations.
|
||||
--FILE--
|
||||
<?php
|
||||
function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
|
||||
echo "Error: $err_no - $err_msg\n";
|
||||
}
|
||||
set_error_handler('test_error_handler');
|
||||
error_reporting(8191);
|
||||
|
||||
|
||||
echo "Object with no __toString():\n";
|
||||
$obj = new stdClass;
|
||||
echo "Try 1:\n";
|
||||
printf($obj);
|
||||
printf("\n");
|
||||
|
||||
echo "\nTry 2:\n";
|
||||
printf($obj . "\n");
|
||||
|
||||
|
||||
echo "\n\nObject with bad __toString():\n";
|
||||
class badToString {
|
||||
function __toString() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
$obj = new badToString;
|
||||
echo "Try 1:\n";
|
||||
printf($obj);
|
||||
printf("\n");
|
||||
|
||||
echo "\nTry 2:\n";
|
||||
printf($obj . "\n");
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Object with no __toString():
|
||||
Try 1:
|
||||
Error: 4096 - Object of class stdClass could not be converted to string
|
||||
Error: 8 - Object of class stdClass to string conversion
|
||||
Object
|
||||
|
||||
Try 2:
|
||||
Error: 4096 - Object of class stdClass could not be converted to string
|
||||
|
||||
|
||||
|
||||
Object with bad __toString():
|
||||
Try 1:
|
||||
Error: 4096 - Method badToString::__toString() must return a string value
|
||||
|
||||
|
||||
Try 2:
|
||||
Error: 4096 - Method badToString::__toString() must return a string value
|
||||
|
Loading…
Reference in New Issue
Block a user