diff options
Diffstat (limited to 'Zend/tests')
| -rw-r--r-- | Zend/tests/class_name_as_scalar.phpt | 77 | ||||
| -rw-r--r-- | Zend/tests/class_name_as_scalar_error_001.phpt | 13 | ||||
| -rw-r--r-- | Zend/tests/class_name_as_scalar_error_002.phpt | 13 | ||||
| -rw-r--r-- | Zend/tests/class_name_as_scalar_error_003.phpt | 13 | ||||
| -rw-r--r-- | Zend/tests/class_name_as_scalar_error_004.phpt | 13 | ||||
| -rw-r--r-- | Zend/tests/class_name_as_scalar_error_005.phpt | 10 | ||||
| -rw-r--r-- | Zend/tests/class_name_as_scalar_error_006.phpt | 10 |
7 files changed, 149 insertions, 0 deletions
diff --git a/Zend/tests/class_name_as_scalar.phpt b/Zend/tests/class_name_as_scalar.phpt new file mode 100644 index 0000000000..38e55b16d5 --- /dev/null +++ b/Zend/tests/class_name_as_scalar.phpt @@ -0,0 +1,77 @@ +--TEST-- +class name as scalar from ::class keyword +--FILE-- +<?php + +namespace Foo\Bar { + class One { + // compile time constants + const A = self::class; + const B = Two::class; + } + class Two extends One { + public static function run() { + var_dump(self::class); // self compile time lookup + var_dump(static::class); // runtime lookup + var_dump(parent::class); // runtime lookup + var_dump(Baz::class); // default compile time lookup + } + } + class Three extends Two { + // compile time static lookups + public static function checkCompileTime( + $one = self::class, + $two = Baz::class, + $three = One::A, + $four = self::B + ) { + var_dump($one, $two, $three, $four); + } + } + echo "In NS\n"; + var_dump(Moo::CLASS); // resolve in namespace +} + +namespace { + use Bee\Bop as Moo, + Foo\Bar\One; + echo "Top\n"; + var_dump(One::class); // resolve from use + var_dump(Boo::class); // resolve in global namespace + var_dump(Moo::CLASS); // resolve from use as + var_dump(\Moo::Class); // resolve fully qualified + $class = One::class; // assign class as scalar to var + $x = new $class; // create new class from original scalar assignment + var_dump($x); + Foo\Bar\Two::run(); // resolve runtime lookups + echo "Parent\n"; + Foo\Bar\Three::run(); // resolve runtime lookups with inheritance + echo "Compile Check\n"; + Foo\Bar\Three::checkCompileTime(); +} + +?> +--EXPECTF-- +In NS +string(11) "Foo\Bar\Moo" +Top +string(11) "Foo\Bar\One" +string(3) "Boo" +string(7) "Bee\Bop" +string(3) "Moo" +object(Foo\Bar\One)#1 (0) { +} +string(11) "Foo\Bar\Two" +string(11) "Foo\Bar\Two" +string(11) "Foo\Bar\One" +string(11) "Foo\Bar\Baz" +Parent +string(11) "Foo\Bar\Two" +string(13) "Foo\Bar\Three" +string(11) "Foo\Bar\One" +string(11) "Foo\Bar\Baz" +Compile Check +string(13) "Foo\Bar\Three" +string(11) "Foo\Bar\Baz" +string(11) "Foo\Bar\One" +string(11) "Foo\Bar\Two" diff --git a/Zend/tests/class_name_as_scalar_error_001.phpt b/Zend/tests/class_name_as_scalar_error_001.phpt new file mode 100644 index 0000000000..1c7aa7ea84 --- /dev/null +++ b/Zend/tests/class_name_as_scalar_error_001.phpt @@ -0,0 +1,13 @@ +--TEST-- +class name as scalar from ::class keyword error using static in class constant +--FILE-- +<?php + +namespace Foo\Bar { + class One { + const Baz = static::class; + } +} +?> +--EXPECTF-- +Fatal error: static::class cannot be used for compile-time class name resolution in %s on line %d diff --git a/Zend/tests/class_name_as_scalar_error_002.phpt b/Zend/tests/class_name_as_scalar_error_002.phpt new file mode 100644 index 0000000000..59b7a2edc9 --- /dev/null +++ b/Zend/tests/class_name_as_scalar_error_002.phpt @@ -0,0 +1,13 @@ +--TEST-- +class name as scalar from ::class keyword error using parent in class constant +--FILE-- +<?php + +namespace Foo\Bar { + class One { + const Baz = parent::class; + } +} +?> +--EXPECTF-- +Fatal error: parent::class cannot be used for compile-time class name resolution in %s on line %d diff --git a/Zend/tests/class_name_as_scalar_error_003.phpt b/Zend/tests/class_name_as_scalar_error_003.phpt new file mode 100644 index 0000000000..9299041693 --- /dev/null +++ b/Zend/tests/class_name_as_scalar_error_003.phpt @@ -0,0 +1,13 @@ +--TEST-- +class name as scalar from ::class keyword error using static in method signature +--FILE-- +<?php + +namespace Foo\Bar { + class One { + public function baz($x = static::class) {} + } +} +?> +--EXPECTF-- +Fatal error: static::class cannot be used for compile-time class name resolution in %s on line %d diff --git a/Zend/tests/class_name_as_scalar_error_004.phpt b/Zend/tests/class_name_as_scalar_error_004.phpt new file mode 100644 index 0000000000..c00037fca3 --- /dev/null +++ b/Zend/tests/class_name_as_scalar_error_004.phpt @@ -0,0 +1,13 @@ +--TEST-- +class name as scalar from ::class keyword error using parent in method signature +--FILE-- +<?php + +namespace Foo\Bar { + class One { + public function baz($x = parent::class) {} + } +} +?> +--EXPECTF-- +Fatal error: parent::class cannot be used for compile-time class name resolution in %s on line %d diff --git a/Zend/tests/class_name_as_scalar_error_005.phpt b/Zend/tests/class_name_as_scalar_error_005.phpt new file mode 100644 index 0000000000..39de69ffb3 --- /dev/null +++ b/Zend/tests/class_name_as_scalar_error_005.phpt @@ -0,0 +1,10 @@ +--TEST-- +class name as scalar from ::class keyword error using static non class context +--FILE-- +<?php + +$x = static::class; + +?> +--EXPECTF-- +Fatal error: Cannot access static::class when no class scope is active in %s on line %d
\ No newline at end of file diff --git a/Zend/tests/class_name_as_scalar_error_006.phpt b/Zend/tests/class_name_as_scalar_error_006.phpt new file mode 100644 index 0000000000..a4cc9a528b --- /dev/null +++ b/Zend/tests/class_name_as_scalar_error_006.phpt @@ -0,0 +1,10 @@ +--TEST-- +class name as scalar from ::class keyword error using parent in non class context +--FILE-- +<?php + +$x = parent::class; + +?> +--EXPECTF-- +Fatal error: Cannot access parent::class when no class scope is active in %s on line %d |
