Good Morning Internals,

I am aware that traits in general are a topic where people can have
strong opinions, so I wanted to get an idea of initial thoughts on
this before deciding if it is worth looking into any further.

At the moment, there are three functions in SPL that allow access to
what a given class is using in some way:
* `class_implements`
* `class_parents`
* `class_uses` (returns the traits the current class uses)

`class_uses` is unique out of the three in that it only returns traits
declared on the current class as opposed to the parent class (and
higher in inheritance). While this is documented in the manual,
looking at the original bug ticket that introduced `class_uses`
(https://bugs.php.net/bug.php?id=55266) then it isn't documented why
it only returns traits on the current class. As far as I can tell from
the bug ticket and the code, `class_implements` was copied for
`class_uses` and while `_zend_class_entry->interaces` contains all
interfaces (including from the parent classes),
`_zend_class_entry->interaces->trait_names` does not.

So, in terms of my question; what would be the general thoughts on a
new optional argument to `class_uses` that iterates to each parent
class, adding the traits from the parent as well?

Thanks,
Robert

Reply via email to