|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2018-05-08 16:21 UTC] requinix@php.net
Description: ------------ Given that __construct and __destruct do not have return types, PHP should raise an error if the user attempts to return a value. Currently it is allowed but the values are ignored. Naturally an empty return should still be allowed. Targeting only master/7.3+ is fine. https://3v4l.org/q1guZ Request or bug? Feels to me like 51% feature request and 49% bug report. Backwards compatibility? Some quick searches on searchcode.com found some constructors returning values, such as false (private constructors) or $this. Test script: --------------- <?php class Foo { public function __construct() { return 123; } public function __destruct() { return 456; } } Expected result: ---------------- Either E_PARSEs or E_WARNINGs. Should be the same one for both methods. Possibly E_WARNING or E_NOTICE when __construct returns $this: it's understandable but still technically wrong. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 07:00:01 2025 UTC |
Actually E_PARSE wouldn't be right. function(): void { return 123; } That will fatal with an E_COMPILE_ERROR, so if this went into 7.3+ then it should be the same level. If it went for 7.1 and 7.2 too then an E_COMPILE_WARNING would probably be better, but given the choice I would rather wait for 7.3 and have it be fatal.