Req #55864 [Com]: Explicit call to default constructor
| From: | dagguh at gmail dot com | Date: | Fri, 07 Oct 2011 10:23:31 +0000 |
| Subject: | Req #55864 [Com]: Explicit call to default constructor | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-164133@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=55864&edit=1
ID: 55864
Comment by: dagguh at gmail dot com
Reported by: dagguh at gmail dot com
Summary: Explicit call to default constructor
Status: Open
Type: Feature/Change Request
Package: Class/Object related
Operating System: Ubuntu 10.04.3 LTS
PHP Version: 5.3.5
Block user comment: N
Private report: N
New Comment:
I stand by my request because of cohesion.
I often see useless code in derived classes, e.g.:
function __construct($name) {
parent::__construct($name);
}
which does absolutely nothing and I delete this code, because php will do it
automatically.
For the same reason I'd like to remove
function __construct() {
;
}
which also does absolutely nothing and php will do the same automatically EXCEPT
in the case I described.
So, I stand by my request :)
Previous Comments:
------------------------------------------------------------------------
[2011-10-07 10:03:48] laruence@php.net
yes, you can instantiate a calss without a constructor be declared, but that doesn't mean there
is default empty constructor.
in PHP, constructor most like a magic method which will be called after a object instantiated
immediatlely.
so if there is no constructor for a class, the new operator still can instantiate a class. but you
can't call a no-exists constructor directly :)
------------------------------------------------------------------------
[2011-10-07 09:55:01] dagguh at gmail dot com
Well you can call:
$base = new Base();
which works, because php uses default, empty constructor.
If new operator can call it, why derived classes can't?
------------------------------------------------------------------------
[2011-10-07 09:41:18] laruence@php.net
Actually, there is no
default constructor in PHP, you should decalare one be
fore you call to it.
I think this should be mark as a feature request.
------------------------------------------------------------------------
[2011-10-07 09:25:40] dagguh at gmail dot com
Fixed version and OS
------------------------------------------------------------------------
[2011-10-07 09:24:50] dagguh at gmail dot com
PS. Actually my PHP version is 5.3.5
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=55864
--
Edit this bug report at https://bugs.php.net/bug.php?id=55864&edit=1