Sure, I get that @martinbean
I've just taken some time out to re-read through the first thread I posted above.
@thepsion5's post mentioned:
I use to append Interface to my interfaces, but I've found that it's not terribly intuitive, especially for typehinting. Mentally, it's easier for me to parse someFunction(UserRepository $users) than someFunction(UserRepositoryInterface $users). Not by a lot, but it adds up over time, especially when I'm dealing with a really complex applications.
I agree with him that appending Interface (even though it's the preferred PHP convention) feels cumbersome in type hinting:
someFunction(UserRepositoryInterface $users) { ... }
The main alternative offered by a few posters, initially @RayRutjes was to alias classes on import:
use UserRepositoryInterface as UserRepository;
someFunction(UserRepository $users) { ... }
That's seems like the best approach to balance explicitness with expressiveness.
Though as a one-liner, I still like the I-prefix:
someFunction(IUserRepository $users) { ... }
Whether or not I use that in my own code remains to be seen. Generally when using a new language or framework I like to work with the best practices as laid down by the framework or author (as you mentioned) as I find it the best way to make your code portable to other people.
As my last question mentioned, I'm also looking for tips on how to manage this, but I guess perhaps it will just come down to experience.