Doc #81038 [Com]: Early binding limitations insufficiently documented
Edit report at https://bugs.php.net/bug.php?id=81038&edit=1
ID: 81038
Comment by: bay23erruff at gmail dot com
Reported by: sh-ya at ya dot ru
Summary: Early binding limitations insufficiently documented
Status: Open
Type: Documentation Problem
Package: Scripting Engine problem
PHP Version: 7.4.19
Block user comment: N
Private report: N
New Comment:
That was a great. (https://www.aceflare.net/)github.com
Previous Comments:
------------------------------------------------------------------------
[2022-11-30 05:16:06] austinpatrick711 at gmail dot com
A really good post, very thankful and hopeful that you will write many more posts like this one.
(https://www.tellpopeyes.ltd/)php.net
------------------------------------------------------------------------
[2021-05-17 13:54:48] nikic@php.net
Traits (and for that matter interfaces) prevent early binding. Early binding if a legacy feature
that we have no plans to extend. You should either declare classes in the correct order or use
autoloading.
As such, I am moving this back to docs.
------------------------------------------------------------------------
[2021-05-17 13:13:13] cmb@php.net
Maybe there is actually a bug, but I don't think it will be fixed.
------------------------------------------------------------------------
[2021-05-17 12:58:18] sh-ya at ya dot ru
comment out "use SomeTrait" and that order will work
------------------------------------------------------------------------
[2021-05-17 10:43:30] cmb@php.net
The problem is the order of the definitions. Animal cannot be
resolved until AnimalFood is defined, and that trips up the
script. This is basically documented[1]:
| Unless autoloading is used, the classes must be defined before
| they are used. If a class extends another, then the parent class
| must be declared before the child class structure. This rule
| applies to classes that inherit other classes and interfaces.
So yes, the best solution is to use autoloading; alternatively you
can fix the order of definitions[2] (that may not always be
possible).
[1] <https://www.php.net/manual/en/language.oop5.inheritance.php>
[2] <https://3v4l.org/RsDcu>
------------------------------------------------------------------------
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=81038
--
Edit this bug report at https://bugs.php.net/bug.php?id=81038&edit=1
Thread (9 messages)