I just want to log one pitfall here that I believe every developer must know.
require_once if we have it across different folders which include the same file, then we expect that it should only load once. But you might get an error saying cannot redeclare the trait again or the trait is already defined.
The key thing here is that require_once requires a full absolute path, then you can expect require_once to load it only once. I had files access from different folder levels and this solved the issue for me.
Maybe for files required at the same folder level, this may not be an issue, haven’t tested that yet.