1--TEST--
2ZE2 A private constructor cannot be called
3--FILE--
4<?php
5
6class Test
7{
8    function __construct()
9    {
10        echo __METHOD__ . "()\n";
11    }
12}
13
14class Derived extends Test
15{
16	function __construct()
17	{
18        echo __METHOD__ . "()\n";
19		parent::__construct();
20	}
21
22	static function f()
23	{
24		new Derived;
25	}
26}
27
28Derived::f();
29
30class TestPriv
31{
32    private function __construct()
33    {
34        echo __METHOD__ . "()\n";
35    }
36
37	static function f()
38	{
39		new TestPriv;
40	}
41}
42
43TestPriv::f();
44
45class DerivedPriv extends TestPriv
46{
47	function __construct()
48	{
49        echo __METHOD__ . "()\n";
50		parent::__construct();
51	}
52
53	static function f()
54	{
55		new DerivedPriv;
56	}
57}
58
59DerivedPriv::f();
60
61?>
62===DONE===
63--EXPECTF--
64Derived::__construct()
65Test::__construct()
66TestPriv::__construct()
67DerivedPriv::__construct()
68
69Fatal error: Uncaught Error: Cannot call private TestPriv::__construct() in %sctor_visibility.php:%d
70Stack trace:
71#0 %s(%d): DerivedPriv->__construct()
72#1 %s(%d): DerivedPriv::f()
73#2 {main}
74  thrown in %sctor_visibility.php on line %d
75