diff options
author | Dmitry Stogov <dmitry@zend.com> | 2015-03-09 13:57:15 +0100 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2015-03-09 14:01:32 +0100 |
commit | 1c94ff0595bbe6f3df8058aff7252bda09dc4a15 (patch) | |
tree | efe488bc3292d544657fca92c4347c9b872931eb /tests/classes | |
parent | 2f156c61f19a889c8ed39fe8eb3b3220555db647 (diff) | |
download | php-git-1c94ff0595bbe6f3df8058aff7252bda09dc4a15.tar.gz |
Implement engine exceptions
RFC: https://wiki.php.net/rfc/engine_exceptions_for_php7
Pending changes regarding naming of BaseException and whether it
should be an interface.
Diffstat (limited to 'tests/classes')
-rw-r--r-- | tests/classes/type_hinting_004.phpt | 136 |
1 files changed, 104 insertions, 32 deletions
diff --git a/tests/classes/type_hinting_004.phpt b/tests/classes/type_hinting_004.phpt index 9068909a82..70637173bd 100644 --- a/tests/classes/type_hinting_004.phpt +++ b/tests/classes/type_hinting_004.phpt @@ -16,13 +16,36 @@ Ensure type hints are enforced for functions invoked as callbacks. function f2(A $a = null) { echo "in f2;\n"; } - call_user_func('f1', 1); - call_user_func('f1', new A); - call_user_func('f2', 1); - call_user_func('f2'); - call_user_func('f2', new A); - call_user_func('f2', null); - + try { + call_user_func('f1', 1); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func('f1', new A); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func('f2', 1); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func('f2'); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func('f2', new A); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func('f2', null); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } echo "\n\n---> Type hints with callback static method:\n"; class C { @@ -41,13 +64,37 @@ Ensure type hints are enforced for functions invoked as callbacks. } } } - call_user_func(array('C', 'f1'), 1); - call_user_func(array('C', 'f1'), new A); - call_user_func(array('C', 'f2'), 1); - call_user_func(array('C', 'f2')); - call_user_func(array('C', 'f2'), new A); - call_user_func(array('C', 'f2'), null); - + + try { + call_user_func(array('C', 'f1'), 1); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array('C', 'f1'), new A); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array('C', 'f2'), 1); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array('C', 'f2')); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array('C', 'f2'), new A); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array('C', 'f2'), null); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } echo "\n\n---> Type hints with callback instance method:\n"; class D { @@ -67,43 +114,68 @@ Ensure type hints are enforced for functions invoked as callbacks. } } $d = new D; - call_user_func(array($d, 'f1'), 1); - call_user_func(array($d, 'f1'), new A); - call_user_func(array($d, 'f2'), 1); - call_user_func(array($d, 'f2')); - call_user_func(array($d, 'f2'), new A); - call_user_func(array($d, 'f2'), null); + + try { + call_user_func(array($d, 'f1'), 1); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array($d, 'f1'), new A); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array($d, 'f2'), 1); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array($d, 'f2')); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array($d, 'f2'), new A); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } + try { + call_user_func(array($d, 'f2'), null); + } catch (EngineException $ex) { + echo "{$ex->getCode()}: {$ex->getMessage()} - {$ex->getFile()}({$ex->getLine()})\n\n"; + } ?> --EXPECTF-- ---> Type hints with callback function: -4096: Argument 1 passed to f1() must be an instance of A, integer given%s(10) -in f1; +4096: Argument 1 passed to f1() must be an instance of A, integer given%s(%d) + in f1; -4096: Argument 1 passed to f2() must be an instance of A, integer given%s(13) -in f2; +4096: Argument 1 passed to f2() must be an instance of A, integer given%s(%d) + in f2; in f2; in f2; ---> Type hints with callback static method: -4096: Argument 1 passed to C::f1() must be an instance of A, integer given%s(26) -in C::f1 (static); +4096: Argument 1 passed to C::f1() must be an instance of A, integer given%s(%d) + in C::f1 (static); -4096: Argument 1 passed to C::f2() must be an instance of A, integer given%s(33) -in C::f2 (static); +4096: Argument 1 passed to C::f2() must be an instance of A, integer given%s(%d) + in C::f2 (static); in C::f2 (static); in C::f2 (static); ---> Type hints with callback instance method: -4096: Argument 1 passed to D::f1() must be an instance of A, integer given%s(51) -in C::f1 (instance); +4096: Argument 1 passed to D::f1() must be an instance of A, integer given%s(%d) + in C::f1 (instance); -4096: Argument 1 passed to D::f2() must be an instance of A, integer given%s(58) -in C::f2 (instance); +4096: Argument 1 passed to D::f2() must be an instance of A, integer given%s(%d) + in C::f2 (instance); in C::f2 (instance); in C::f2 (instance); |