com php-src: Add more tests that document late static binding: Zend/tests/lsb_023.phpt Zend/tests/lsb_024 .phpt
| From: | Nikita Popov | Date: | Tue, 15 Dec 2020 09:04:39 +0000 |
| Subject: | com php-src: Add more tests that document late static binding: Zend/tests/lsb_023.phpt Zend/tests/lsb_024 .phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-114446@lists.php.net to get a copy of this message | ||
Commit: c1e977f1bbd29bffc2404d96acc1dd7773aeea4a
Author: jellyNoone <jelly.legend@gmail.com> Mon, 14 Dec 2020 23:03:12 +0100
Committer: Nikita Popov <nikita.ppv@gmail.com> Tue, 15 Dec 2020 10:04:39 +0100
Parents: f9942b061d980113193930b4e22b1e95bbec1c38
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c1e977f1bbd29bffc2404d96acc1dd7773aeea4a
Log:
Add more tests that document late static binding
Closes GH-6515.
Changed paths:
A Zend/tests/lsb_023.phpt
A Zend/tests/lsb_024.phpt
Diff:
diff --git a/Zend/tests/lsb_023.phpt b/Zend/tests/lsb_023.phpt
new file mode 100644
index 00000000000..a8051aa85fe
--- /dev/null
+++ b/Zend/tests/lsb_023.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Late Static Binding static:: calls protected / public method of child class even then
+the method is private in parent class
+--FILE--
+<?php
+class A {
+ public static function out() {
+ echo static::value(), PHP_EOL;
+ }
+
+ private static function value() { return 'A'; }
+}
+class B extends A {
+ protected static function value() { return 'B'; }
+}
+class C extends A {
+ public static function value() { return 'C'; }
+}
+A::out();
+B::out();
+C::out();
+echo PHP_EOL;
+--EXPECT--
+A
+B
+C
diff --git a/Zend/tests/lsb_024.phpt b/Zend/tests/lsb_024.phpt
new file mode 100644
index 00000000000..2c71c678d35
--- /dev/null
+++ b/Zend/tests/lsb_024.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Late Static Binding static:: accesses protected / public static variables of child
+class when the variable is private in parent class
+--FILE--
+<?php
+class A {
+ private static $value = 'A';
+
+ public static function out() {
+ echo static::$value, PHP_EOL;
+ }
+}
+class B extends A {
+ protected static $value = 'B';
+}
+class C extends A {
+ public static $value = 'C';
+}
+A::out();
+B::out();
+C::out();
+--EXPECT--
+A
+B
+C