Doc #63832 [Opn]: Doc don't fully cover constructor inheritance
| From: | jschoett at gmail dot com | Date: | Thu, 27 Dec 2012 09:17:25 +0000 |
| Subject: | Doc #63832 [Opn]: Doc don't fully cover constructor inheritance | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-9323@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=63832&edit=1
ID: 63832
User updated by: jschoett at gmail dot com
Reported by: jschoett at gmail dot com
-Summary: Doc don't fully cover constr. inheritance
+Summary: Doc don't fully cover constructor inheritance
Status: Open
Type: Documentation Problem
Package: Documentation problem
Operating System: Doc problem
PHP Version: 5.4.10
Block user comment: N
Private report: N
New Comment:
just title adapted.
Previous Comments:
------------------------------------------------------------------------
[2012-12-21 21:03:37] jschoett at gmail dot com
Description:
------------
---
From manual page: http://www.php.net/language.oop5.decon
---
I can not find a definite statement on this:
"The child class inherits the constructor of the base class, iff the child class
does not explicitly define an own constructor."
The documentation do not cover this with:
"Note: Parent constructors are not called implicitly if the child class defines a
constructor"
In addition, since this is an significant difference to e.g. Java, it should be
documented
Test script:
---------------
Snippet to validate this statement (I know you already know the result):
<?php
class A {
private $x = null;
function __construct($x) {
$this->x = $x;
}
}
class B extends A { }
$b1 = new B(); // Warning: Missing argument 1 for A::__construct()
$b2 = new B(1);
var_dump($b1); // Notice: Undefined variable: x
var_dump($b2);
?>
Expected result:
----------------
Same as actual, but I wan't it to be documented :)
Actual result:
--------------
Warning: Missing argument 1 for A::__construct(), called in path\testoutput.php on
line 28 and defined in path\testoutput.php on line 21
Notice: Undefined variable: x in path\testoutput.php on line 22
object(B)#1 (1) { ["x":"A":private]=> NULL } object(B)#2 (1) {
["x":"A":private]=>
int(1) }
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=63832&edit=1