Skip to content

Commit 24cd8c2

Browse files
committed
add more tests
1 parent e494111 commit 24cd8c2

File tree

4 files changed

+71
-0
lines changed

4 files changed

+71
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--TEST--
2+
nested inside function
3+
--FILE--
4+
<?php
5+
6+
class Outer {
7+
public function test() {
8+
class Inner {}
9+
}
10+
}
11+
?>
12+
--EXPECTF--
13+
Fatal error: Class declarations may not be declared inside functions in %s on line %d
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
basic nested classes
3+
--FILE--
4+
<?php
5+
6+
namespace Foo;
7+
8+
class Outer {
9+
class Middle {
10+
class Inner {
11+
public function test() {
12+
echo __CLASS__;
13+
}
14+
}
15+
}
16+
}
17+
new Outer\Middle\Inner()->test();
18+
?>
19+
--EXPECT--
20+
Foo\Outer\Middle\Inner
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
--TEST--
2+
scope resolution access
3+
--FILE--
4+
<?php
5+
6+
class Outer {
7+
public class Middle {
8+
}
9+
public static function testSelf(): Middle {
10+
return new Middle();
11+
}
12+
}
13+
14+
class Outer2 extends Outer {
15+
public class Middle extends Outer\Middle {
16+
}
17+
18+
public static function testParent(): Outer\Middle {
19+
return new Outer\Middle();
20+
}
21+
22+
public static function testSelf(): Middle {
23+
return new Middle();
24+
}
25+
}
26+
27+
var_dump(Outer::testSelf());
28+
var_dump(Outer2::testParent());
29+
var_dump(Outer2::testSelf());
30+
31+
?>
32+
--EXPECT--
33+
object(Outer\Middle)#1 (0) {
34+
}
35+
object(Outer\Middle)#1 (0) {
36+
}
37+
object(Outer2\Middle)#1 (0) {
38+
}

0 commit comments

Comments
 (0)