diff options
author | Marcus Boerger <helly@php.net> | 2003-02-05 23:07:24 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2003-02-05 23:07:24 +0000 |
commit | 984cde31238e45dfc28ba21553802d297e3eb121 (patch) | |
tree | a94c462f7da726813f35a71edb301d0c2ccc5919 /tests | |
parent | edde957038c1dc1514eda868326fd7b70e492389 (diff) | |
download | php-git-984cde31238e45dfc28ba21553802d297e3eb121.tar.gz |
Add PPP method tests
Diffstat (limited to 'tests')
30 files changed, 994 insertions, 0 deletions
diff --git a/tests/classes/private_001.phpt b/tests/classes/private_001.phpt new file mode 100644 index 0000000000..93c2eb20ed --- /dev/null +++ b/tests/classes/private_001.phpt @@ -0,0 +1,26 @@ +--TEST-- +A private method can only be called inside the class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + private static function show() { + echo "Call show()\n"; + } + + public static function do_show() { + pass::show(); + } +} + +pass::do_show(); +pass::show(); + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call show() + +Fatal error: Call to private method pass::show() from context '' in %s on line %d diff --git a/tests/classes/private_002.phpt b/tests/classes/private_002.phpt new file mode 100644 index 0000000000..03e27864d5 --- /dev/null +++ b/tests/classes/private_002.phpt @@ -0,0 +1,35 @@ +--TEST-- +A private method cannot be called in another class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + private static function show() { + echo "Call pass::show()\n"; + } + + public static function do_show() { + pass::show(); + } +} + +pass::do_show(); + +class fail { + public static function show() { + echo "Call fail::show()\n"; + pass::show(); + } +} + +fail::show(); + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call pass::show() +Call fail::show() + +Fatal error: Call to private method pass::show() from context 'fail' in %s on line %d diff --git a/tests/classes/private_003.phpt b/tests/classes/private_003.phpt new file mode 100644 index 0000000000..d65222de94 --- /dev/null +++ b/tests/classes/private_003.phpt @@ -0,0 +1,36 @@ +--TEST-- +A private method cannot be called in a derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php +ini_set("error_reporting",2039); +class pass { + private static function show() { + echo "Call show()\n"; + } + + protected static function good() { + pass::show(); + } +} + +class fail extends pass { + static function ok() { + pass::good(); + } + + static function not_ok() { + pass::show(); + } +} + +fail::ok(); +fail::not_ok(); // calling a private function + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call show() + +Fatal error: Call to private method pass::show() from context 'fail' in %s on line %d diff --git a/tests/classes/private_003b.phpt b/tests/classes/private_003b.phpt new file mode 100644 index 0000000000..ff64a16de8 --- /dev/null +++ b/tests/classes/private_003b.phpt @@ -0,0 +1,37 @@ +--TEST-- +A private method cannot be called in a derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + private function show() { + echo "Call show()\n"; + } + + protected function good() { + $this->show(); + } +} + +class fail extends pass { + public function ok() { + $this->good(); + } + + public function not_ok() { + $this->show(); + } +} + +$t = new fail(); +$t->ok(); +$t->not_ok(); // calling a private function + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call show() + +Fatal error: Call to private method pass::show() from context 'fail' in %s on line %d diff --git a/tests/classes/private_004.phpt b/tests/classes/private_004.phpt new file mode 100644 index 0000000000..2d34c191cd --- /dev/null +++ b/tests/classes/private_004.phpt @@ -0,0 +1,32 @@ +--TEST-- +A private method cannot be called in a derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + private static function show() { + echo "Call show()\n"; + } + + public static function do_show() { + pass::show(); + } +} + +class fail extends pass { + static function do_show() { + fail::show(); + } +} + +pass::do_show(); +fail::do_show(); + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call show() + +Fatal error: Call to private method pass::show() from context 'fail' in %s on line %d diff --git a/tests/classes/private_004b.phpt b/tests/classes/private_004b.phpt new file mode 100644 index 0000000000..979e1c700a --- /dev/null +++ b/tests/classes/private_004b.phpt @@ -0,0 +1,35 @@ +--TEST-- +A private method cannot be called in a derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + private function show() { + echo "Call show()\n"; + } + + public function do_show() { + $this->show(); + } +} + +class fail extends pass { + function do_show() { + $this->show(); + } +} + +$t = new pass(); +$t->do_show(); + +$t2 = new fail(); +$t2->do_show(); + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call show() + +Fatal error: Call to private method pass::show() from context 'fail' in %s on line %d
\ No newline at end of file diff --git a/tests/classes/private_005.phpt b/tests/classes/private_005.phpt new file mode 100644 index 0000000000..482b20ef35 --- /dev/null +++ b/tests/classes/private_005.phpt @@ -0,0 +1,32 @@ +--TEST-- +A private method cannot be called in a derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + private static function show() { + echo "Call show()\n"; + } + + public static function do_show() { + pass::show(); + } +} + +class fail extends pass { + static function do_show() { + pass::show(); + } +} + +pass::do_show(); +fail::do_show(); + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call show() + +Fatal error: Call to private method pass::show() from context 'fail' in %s on line %d diff --git a/tests/classes/private_005b.phpt b/tests/classes/private_005b.phpt new file mode 100644 index 0000000000..979e1c700a --- /dev/null +++ b/tests/classes/private_005b.phpt @@ -0,0 +1,35 @@ +--TEST-- +A private method cannot be called in a derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + private function show() { + echo "Call show()\n"; + } + + public function do_show() { + $this->show(); + } +} + +class fail extends pass { + function do_show() { + $this->show(); + } +} + +$t = new pass(); +$t->do_show(); + +$t2 = new fail(); +$t2->do_show(); + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call show() + +Fatal error: Call to private method pass::show() from context 'fail' in %s on line %d
\ No newline at end of file diff --git a/tests/classes/private_006.phpt b/tests/classes/private_006.phpt new file mode 100644 index 0000000000..7055efd255 --- /dev/null +++ b/tests/classes/private_006.phpt @@ -0,0 +1,41 @@ +--TEST-- +A private method can be overwritten in a second derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php +class first { + private static function show() { + echo "Call show()\n"; + } + + public static function do_show() { + first::show(); + } +} + +first::do_show(); + +class second extends first { +} + +second::do_show(); + +class third extends second { +} + +third::do_show(); + +class fail extends third { + static function show() { // cannot be redeclared + echo "Call show()\n"; + } +} + +echo "Done\n"; +?> +--EXPECTF-- +Call show() +Call show() +Call show() +Done diff --git a/tests/classes/private_006b.phpt b/tests/classes/private_006b.phpt new file mode 100644 index 0000000000..329ba33b37 --- /dev/null +++ b/tests/classes/private_006b.phpt @@ -0,0 +1,41 @@ +--TEST-- +A private method can be overwritten in a second derived class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class first { + private function show() { + echo "Call show()\n"; + } + + public function do_show() { + $this->show(); + } +} + +$t1 = new first(); +$t1->do_show(); + +class second extends first { +} + +//$t2 = new second(); +//$t2->do_show(); + +class third extends second { + private function show() { + echo "Call show()\n"; + } +} + +$t3 = new third(); +$t3->do_show(); + +echo "Done\n"; +?> +--EXPECTF-- +Call show() +Call show() +Done
\ No newline at end of file diff --git a/tests/classes/private_007.phpt b/tests/classes/private_007.phpt new file mode 100644 index 0000000000..09503f0b96 --- /dev/null +++ b/tests/classes/private_007.phpt @@ -0,0 +1,30 @@ +--TEST-- +A derived class does not know about privates of ancestors +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class Bar { + public static function pub() { + Bar::priv(); + } + private static function priv() { + echo "Bar::priv()\n"; + } +} +class Foo extends Bar { + public static function priv() { + echo "Foo::priv()\n"; + } +} + +Foo::pub(); +Foo::priv(); + +echo "Done\n"; +?> +--EXPECTF-- +Bar::priv() +Foo::priv() +Done diff --git a/tests/classes/private_007b.phpt b/tests/classes/private_007b.phpt new file mode 100644 index 0000000000..453e250b61 --- /dev/null +++ b/tests/classes/private_007b.phpt @@ -0,0 +1,31 @@ +--TEST-- +A derived class does not know about privates of ancestors +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class Bar { + public function pub() { + $this->priv(); + } + private function priv() { + echo "Bar::priv()\n"; + } +} +class Foo extends Bar { + public function priv() { + echo "Foo::priv()\n"; + } +} + +$obj = new Foo(); +$obj->pub(); +$obj->priv(); + +echo "Done\n"; +?> +--EXPECTF-- +Bar::priv() +Foo::priv() +Done diff --git a/tests/classes/protected_001.phpt b/tests/classes/protected_001.phpt new file mode 100644 index 0000000000..6814a7cdbe --- /dev/null +++ b/tests/classes/protected_001.phpt @@ -0,0 +1,26 @@ +--TEST-- +A protected method can only be called inside the class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + protected static function fail() { + echo "Call fail()\n"; + } + + public static function good() { + pass::fail(); + } +} + +pass::good(); +pass::fail();// must fail because we are calling from outside of class pass + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call fail() + +Fatal error: Call to protected method pass::fail() from context '' in %s on line %d diff --git a/tests/classes/protected_001b.phpt b/tests/classes/protected_001b.phpt new file mode 100644 index 0000000000..2670ff8ebc --- /dev/null +++ b/tests/classes/protected_001b.phpt @@ -0,0 +1,27 @@ +--TEST-- +A protected method can only be called inside the class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + protected function fail() { + echo "Call fail()\n"; + } + + public function good() { + $this->fail(); + } +} + +$t = new pass(); +$t->good(); +$t->fail();// must fail because we are calling from outside of class pass + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call fail() + +Fatal error: Call to protected method pass::fail() from context '' in %s on line %d diff --git a/tests/classes/protected_002.phpt b/tests/classes/protected_002.phpt new file mode 100644 index 0000000000..19d31645b9 --- /dev/null +++ b/tests/classes/protected_002.phpt @@ -0,0 +1,35 @@ +--TEST-- +A protected method cannot be called in another class +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class pass { + protected static function show() { + echo "Call pass::show()\n"; + } + + public static function do_show() { + pass::show(); + } +} + +pass::do_show(); + +class fail { + public static function show() { + echo "Call fail::show()\n"; + pass::show(); + } +} + +fail::show(); + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Call pass::show() +Call fail::show() + +Fatal error: Call to protected method pass::show() from context 'fail' in %s on line %d diff --git a/tests/classes/visibility_000a.phpt b/tests/classes/visibility_000a.phpt new file mode 100644 index 0000000000..c7962b9ac5 --- /dev/null +++ b/tests/classes/visibility_000a.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + protected function f0() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Fatal error: Access level to fail::f0() must be public (as in class same) in %s on line %d diff --git a/tests/classes/visibility_000b.phpt b/tests/classes/visibility_000b.phpt new file mode 100644 index 0000000000..af80992dea --- /dev/null +++ b/tests/classes/visibility_000b.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + private function f0() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Fatal error: Access level to fail::f0() must be public (as in class same) in %s on line %d diff --git a/tests/classes/visibility_000c.phpt b/tests/classes/visibility_000c.phpt new file mode 100644 index 0000000000..014585229b --- /dev/null +++ b/tests/classes/visibility_000c.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + function f0() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Done diff --git a/tests/classes/visibility_001a.phpt b/tests/classes/visibility_001a.phpt new file mode 100644 index 0000000000..844a3ffe4f --- /dev/null +++ b/tests/classes/visibility_001a.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + protected function f1() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Fatal error: Access level to fail::f1() must be public (as in class same) in %s on line %d diff --git a/tests/classes/visibility_001b.phpt b/tests/classes/visibility_001b.phpt new file mode 100644 index 0000000000..54d0283a5f --- /dev/null +++ b/tests/classes/visibility_001b.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + private function f1() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Fatal error: Access level to fail::f1() must be public (as in class same) in %s on line %d diff --git a/tests/classes/visibility_001c.phpt b/tests/classes/visibility_001c.phpt new file mode 100644 index 0000000000..171421251b --- /dev/null +++ b/tests/classes/visibility_001c.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + function f1() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Done diff --git a/tests/classes/visibility_002a.phpt b/tests/classes/visibility_002a.phpt new file mode 100644 index 0000000000..9fed6225c8 --- /dev/null +++ b/tests/classes/visibility_002a.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + protected function f2() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Fatal error: Access level to fail::f2() must be public (as in class same) in %s on line %d diff --git a/tests/classes/visibility_002b.phpt b/tests/classes/visibility_002b.phpt new file mode 100644 index 0000000000..c4b7cadab4 --- /dev/null +++ b/tests/classes/visibility_002b.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + private function f2() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Fatal error: Access level to fail::f2() must be public (as in class same) in %s on line %d diff --git a/tests/classes/visibility_002c.phpt b/tests/classes/visibility_002c.phpt new file mode 100644 index 0000000000..c906a823e9 --- /dev/null +++ b/tests/classes/visibility_002c.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + function f2() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Done diff --git a/tests/classes/visibility_003a.phpt b/tests/classes/visibility_003a.phpt new file mode 100644 index 0000000000..27572ececa --- /dev/null +++ b/tests/classes/visibility_003a.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + public function f3() {} +} + +echo "Done\n"; +?> +--EXPECTF-- +Done diff --git a/tests/classes/visibility_003b.phpt b/tests/classes/visibility_003b.phpt new file mode 100644 index 0000000000..f2de2d2ff6 --- /dev/null +++ b/tests/classes/visibility_003b.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + private function f3() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Fatal error: Access level to fail::f3() must be protected (as in class same) or weaker in %s on line %d diff --git a/tests/classes/visibility_003c.phpt b/tests/classes/visibility_003c.phpt new file mode 100644 index 0000000000..fcb9592ff7 --- /dev/null +++ b/tests/classes/visibility_003c.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + function f3() {} +} + +echo "Done\n"; +?> +--EXPECTF-- +Done diff --git a/tests/classes/visibility_004a.phpt b/tests/classes/visibility_004a.phpt new file mode 100644 index 0000000000..8aaaa0f3f5 --- /dev/null +++ b/tests/classes/visibility_004a.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + public function f4() {} +} + +echo "Done\n"; +?> +--EXPECTF-- +Done diff --git a/tests/classes/visibility_004b.phpt b/tests/classes/visibility_004b.phpt new file mode 100644 index 0000000000..90d0b72f62 --- /dev/null +++ b/tests/classes/visibility_004b.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + protected function f4() {} +} + +echo "Done\n"; // shouldn't be displayed +?> +--EXPECTF-- +Done diff --git a/tests/classes/visibility_004c.phpt b/tests/classes/visibility_004c.phpt new file mode 100644 index 0000000000..e488bfeae8 --- /dev/null +++ b/tests/classes/visibility_004c.phpt @@ -0,0 +1,33 @@ +--TEST-- +A redeclared method must have the same or higher visibility +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class father { + function f0() {} + function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class same extends father { + + // overload fn with same visibility + function f0() {} + public function f1() {} + public function f2() {} + protected function f3() {} + private function f4() {} +} + +class fail extends same { + function f4() {} +} + +echo "Done\n"; +?> +--EXPECTF-- +Done |