mirror of
https://github.com/php/php-src.git
synced 2024-11-24 02:15:04 +08:00
- Add/fix tests
This commit is contained in:
parent
4bb39ad2a5
commit
10f77a5d71
@ -89,10 +89,14 @@ if (is_callable(array('test_class','test_func4'))) {
|
||||
$object = new foo();
|
||||
$object->test();
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECTF--
|
||||
test_func1
|
||||
test_func2
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func3() canot be called statically, assuming $this from compatible context test_class in %sbug29210.php on line %d
|
||||
test_func3
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func4() canot be called statically, assuming $this from compatible context test_class in %sbug29210.php on line %d
|
||||
test_func4
|
||||
test_func1 isn't callable from outside
|
||||
test_func2 isn't callable from outside
|
||||
@ -100,5 +104,9 @@ test_func3 isn't callable from outside
|
||||
test_func4 isn't callable from outside
|
||||
test_func1 isn't callable from child
|
||||
test_func2
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func3() canot be called statically, assuming $this from compatible context foo in %sbug29210.php on line %d
|
||||
test_func3 isn't callable from child
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func4() canot be called statically, assuming $this from compatible context foo in %sbug29210.php on line %d
|
||||
test_func4
|
||||
|
@ -7,7 +7,31 @@ class TestA
|
||||
{
|
||||
public function doSomething($i)
|
||||
{
|
||||
echo __METHOD__ . "($this)\n";
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public function doSomethingThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public function doSomethingParent($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public function doSomethingParentThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public static function doSomethingStatic($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
}
|
||||
@ -16,20 +40,87 @@ class TestB extends TestA
|
||||
{
|
||||
public function doSomething($i)
|
||||
{
|
||||
echo __METHOD__ . "($this)\n";
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array("TestA", "doSomething"), array($i));
|
||||
}
|
||||
|
||||
public function doSomethingThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array($this, "TestA::doSomethingThis"), array($i));
|
||||
}
|
||||
|
||||
public function doSomethingParent($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array("parent", "doSomethingParent"), array($i));
|
||||
}
|
||||
|
||||
public function doSomethingParentThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array($this, "parent::doSomethingParentThis"), array($i));
|
||||
}
|
||||
|
||||
public static function doSomethingStatic($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array("TestA", "doSomethingStatic"), array($i));
|
||||
}
|
||||
}
|
||||
|
||||
$x = new TestB();
|
||||
echo "===A===\n";
|
||||
var_dump($x->doSomething(1));
|
||||
echo "\n===B===\n";
|
||||
var_dump($x->doSomethingThis(1));
|
||||
echo "\n===C===\n";
|
||||
var_dump($x->doSomethingParent(1));
|
||||
echo "\n===D===\n";
|
||||
var_dump($x->doSomethingParentThis(1));
|
||||
echo "\n===E===\n";
|
||||
var_dump($x->doSomethingStatic(1));
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
<?php exit(0); ?>
|
||||
--EXPECTF--
|
||||
TestB::doSomething(Object id #%d)
|
||||
TestA::doSomething(Object id #%d)
|
||||
===A===
|
||||
TestB::doSomething(1)
|
||||
|
||||
Strict Standards: Non-static method TestA::doSomething() canot be called statically, assuming $this from compatible context TestB in %sbug32290.php on line %d
|
||||
TestA::doSomething(2)
|
||||
int(1)
|
||||
|
||||
===B===
|
||||
TestB::doSomethingThis(1)
|
||||
TestA::doSomethingThis(2)
|
||||
int(1)
|
||||
|
||||
===C===
|
||||
TestB::doSomethingParent(1)
|
||||
|
||||
Strict Standards: Non-static method TestA::doSomethingParent() canot be called statically, assuming $this from compatible context TestB in %sbug32290.php on line %d
|
||||
TestA::doSomethingParent(2)
|
||||
int(1)
|
||||
|
||||
===D===
|
||||
TestB::doSomethingParentThis(1)
|
||||
TestA::doSomethingParentThis(2)
|
||||
int(1)
|
||||
|
||||
===E===
|
||||
TestB::doSomethingStatic(1)
|
||||
TestA::doSomethingStatic(2)
|
||||
int(1)
|
||||
===DONE===
|
||||
|
138
ext/spl/tests/spl_autoload_007.phpt
Executable file
138
ext/spl/tests/spl_autoload_007.phpt
Executable file
@ -0,0 +1,138 @@
|
||||
--TEST--
|
||||
SPL: spl_autoload() with inaccessible methods
|
||||
--INI--
|
||||
include_path=.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class MyAutoLoader {
|
||||
|
||||
static protected function noAccess($className) {
|
||||
echo __METHOD__ . "($className)\n";
|
||||
}
|
||||
|
||||
static function autoLoad($className) {
|
||||
echo __METHOD__ . "($className)\n";
|
||||
}
|
||||
|
||||
function dynaLoad($className) {
|
||||
echo __METHOD__ . "($className)\n";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyAutoLoader;
|
||||
|
||||
$funcs = array(
|
||||
'MyAutoLoader::notExist',
|
||||
'MyAutoLoader::noAccess',
|
||||
'MyAutoLoader::autoLoad',
|
||||
'MyAutoLoader::dynaLoad',
|
||||
array('MyAutoLoader', 'notExist'),
|
||||
array('MyAutoLoader', 'noAccess'),
|
||||
array('MyAutoLoader', 'autoLoad'),
|
||||
array('MyAutoLoader', 'dynaLoad'),
|
||||
array($obj, 'notExist'),
|
||||
array($obj, 'noAccess'),
|
||||
array($obj, 'autoLoad'),
|
||||
array($obj, 'dynaLoad'),
|
||||
);
|
||||
|
||||
foreach($funcs as $idx => $func)
|
||||
{
|
||||
if ($idx) echo "\n";
|
||||
try
|
||||
{
|
||||
var_dump($func);
|
||||
spl_autoload_register($func);
|
||||
echo "ok\n";
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
echo $e->getMessage() . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
<?php exit(0); ?>
|
||||
--EXPECTF--
|
||||
string(22) "MyAutoLoader::notExist"
|
||||
Function 'MyAutoLoader::notExist' not found
|
||||
|
||||
string(22) "MyAutoLoader::noAccess"
|
||||
Function 'MyAutoLoader::noAccess' not callable
|
||||
|
||||
string(22) "MyAutoLoader::autoLoad"
|
||||
ok
|
||||
|
||||
string(22) "MyAutoLoader::dynaLoad"
|
||||
Function 'MyAutoLoader::dynaLoad' not callable
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(12) "MyAutoLoader"
|
||||
[1]=>
|
||||
string(8) "notExist"
|
||||
}
|
||||
Passed array does not specify an existing static method
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(12) "MyAutoLoader"
|
||||
[1]=>
|
||||
string(8) "noAccess"
|
||||
}
|
||||
Passed array does not specify a callable static method
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(12) "MyAutoLoader"
|
||||
[1]=>
|
||||
string(8) "autoLoad"
|
||||
}
|
||||
ok
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(12) "MyAutoLoader"
|
||||
[1]=>
|
||||
string(8) "dynaLoad"
|
||||
}
|
||||
Passed array specifies a non static method but no object
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyAutoLoader)#%d (0) {
|
||||
}
|
||||
[1]=>
|
||||
string(8) "notExist"
|
||||
}
|
||||
Passed array does not specify an existing method
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyAutoLoader)#%d (0) {
|
||||
}
|
||||
[1]=>
|
||||
string(8) "noAccess"
|
||||
}
|
||||
Passed array does not specify a callable method
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyAutoLoader)#%d (0) {
|
||||
}
|
||||
[1]=>
|
||||
string(8) "autoLoad"
|
||||
}
|
||||
ok
|
||||
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyAutoLoader)#%d (0) {
|
||||
}
|
||||
[1]=>
|
||||
string(8) "dynaLoad"
|
||||
}
|
||||
ok
|
||||
===DONE===
|
@ -1,14 +1,14 @@
|
||||
--TEST--
|
||||
Bug #32647 (Using register_shutdown_function() with invalid callback can crash PHP)
|
||||
--INI--
|
||||
error_reporting=2047
|
||||
error_reporting=4095
|
||||
display_errors=1
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function foo()
|
||||
{
|
||||
echo "joo!\n";
|
||||
echo "foo!\n";
|
||||
}
|
||||
|
||||
class bar
|
||||
@ -23,9 +23,9 @@ register_shutdown_function(array($obj,"some string")); // Invalid
|
||||
register_shutdown_function(array(0,"")); // Invalid
|
||||
register_shutdown_function(array('bar','foo')); // Invalid
|
||||
register_shutdown_function(array(0,"some string")); // Invalid
|
||||
register_shutdown_function('bar'); // Valid
|
||||
register_shutdown_function('bar'); // Invalid
|
||||
register_shutdown_function('foo'); // Valid
|
||||
register_shutdown_function(array('bar','barfoo')); // Valid
|
||||
register_shutdown_function(array('bar','barfoo')); // Invalid
|
||||
|
||||
$obj = new bar;
|
||||
register_shutdown_function(array($obj,'foobar')); // Invalid
|
||||
@ -45,11 +45,13 @@ Warning: register_shutdown_function(): Invalid shutdown callback 'Array' passed
|
||||
|
||||
Warning: register_shutdown_function(): Invalid shutdown callback 'Array' passed in %s on line %d
|
||||
|
||||
Warning: (Registered shutdown functions) Unable to call bar::foo() - function does not exist in Unknown on line 0
|
||||
Strict Standards: Non-static method bar::barfoo() cannot be called statically in %sbug32647.php on line %d
|
||||
|
||||
Warning: (Registered shutdown functions) Unable to call bar() - function does not exist in Unknown on line 0
|
||||
joo!
|
||||
bar!
|
||||
Warning: register_shutdown_function(): Invalid shutdown callback 'bar::foobar' passed in %sbug32647.php on line %d
|
||||
foo!
|
||||
|
||||
Warning: (Registered shutdown functions) Unable to call bar::foobar() - function does not exist in Unknown on line 0
|
||||
Strict Standards: Non-static method bar::barfoo() cannot be called statically in Unknown on line 0
|
||||
|
||||
Strict Standards: Non-static method bar::barfoo() cannot be called statically in Unknown on line 0
|
||||
bar!
|
||||
bar!
|
||||
|
@ -20,5 +20,6 @@ Bug #27504 (call_user_func_array allows calling of private/protected methods)
|
||||
--EXPECTF--
|
||||
Called function foo:bar(%d)
|
||||
|
||||
Fatal error: Call to private method foo::bar() from context '' in %s on line 13
|
||||
Warning: call_user_func_array(): First argument is expected to be a valid callback, 'foo::bar' was given in %sbug27504.php on line %d
|
||||
|
||||
Fatal error: Call to private method foo::bar() from context '' in %s on line %d
|
||||
|
Loading…
Reference in New Issue
Block a user