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