On Wed, Feb 17, 2016 at 1:17 PM, Fleshgrinder <p...@fleshgrinder.com> wrote:
> I agree with the others having a class implementing the interface > automatically just because a trait implements it is not a good idea. > The class should always decide on its own if it wants to implement an > interface or not. > I'm not clear on the motivation for this principle. Is there anything I could read up about explicit vs implicit in PHP design? > > Note that the situation with true inheritance (extends) is very > different compared to the usage of a trait. When one extends a class > it automatically agrees to the "is a" contract. In other words, it > MUST implement all interfaces that any of the parents implements, > otherwise it cannot fulfill the "is a" contract. > > Another thing that is important to note is that a class might want to > use a particular trait but does not want to implement the interface in > the first place. > What cases are you thinking of here? I'm trying to come up with an example where a class that wouldn't want an interface provided by a trait it uses. > > That being said, the actual thing one wants is that the IDE helps us > to not overlook a method that we might forgot about while implementing > that default trait for an interface. This is something where PHPDoc > shines and should be used for. Actually I proposed this already for > the upcoming PSR-5 that covers PHPDoc. However, that feature might be > out of scope for the PSR. > > TL;DR Create feature requests for PHPDoc software (IDEs etc.) to > support "@implements InterfaceName" (and maybe "@extends ClassName") > in order to fulfill this use case and do not change the language. > I don't use a PHPDoc-aware IDE (I'm old fashioned), so I'd want any change to be part of the language itself, where enforcement is guaranteed. > > - -- > Richard "Fleshgrinder" Fussenegger > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2 > > iQIcBAEBCAAGBQJWxLkuAAoJEOKkKcqFPVVrJe4P/1Qz43ey6g7aEQUegOyfuoIQ > GokTsUS42pedbGr3mYdf2/qatFp+/CyMv4FovLX4+m2wRn10AFmeYENi4RcFItb+ > ILiiTynMPrQqV3IGgujHYwNDA/J4Qo3mn8FnNcLWl6nz3bFaxPTu2ygEgPYWz9Yu > Y9qBcPqdQn1o/ipUf9D+thFzDKtCqCAEoPmBcCQWwCIK3yiUfqbkOzNBqynlE/qK > 9lhCrF3+5XSrTkxl+gwzm9YUEA/EO7BUO6i8bXex9ZPDBSfRQet29DYUR9pGu8/p > VMyHd9w1H60QCequreW4kZwixO010jKAO9EUwXMU/+yYV5C2Iy/5eRcKVERgLT75 > BtKC0eNRW6kw58ZnRRYiVLfqlCZDQYU2kQ0S7R4Nym04agOZ2tdneKFgEYn3uo/k > qNzaTLLYRbPNnfyYcZ4DRtsI82OIHrw2x8U9KrOU48fnvtLeW3+nShwXFK1oLU40 > hsB+jU28OvsSohBngwAQn2z7nIJVqLiyVCnWj48omtzBJ7GesfIUt2Cu1cG9yK+/ > EeCVIXhI9m1W5Wf2k8oEaB8Amy5rZwW6b1PA+JHJ+aYQjvG3CY6ipSka/RhRqAgf > ABTLX8k1a7Hdd8kXheC1vIhhjLgIWijW59Bzg/oxN4RiRe2c90s4e857VN+fEBfK > 6xVA5XfwMQ2N4tn+P2Zq > =7rF9 > -----END PGP SIGNATURE----- > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >