Hi Nathan:
On 17 Nov 2010, at 19:06, Nathan Nobbe wrote:
> So it sounds like implementing an interface directly with a trait has been
> shot down,
Yes, Traits are meant to be compile-time only, they are not used to introduce
typing relationships.
> what I wonder about is will it still work if a class implements
> an interface and uses a trait which provides the functions in said
> interface?
Yes, sure.
>
> <?php
> interface IHello {
> public function sayHello();
> }
>
> trait SayHello {
> public function sayHello() {
> echo 'hello world';
> }
> }
This is a typical pattern I would expect to see in code that uses traits.
You have an interface and then you provide a trait thats provide a standard
implementation for that interface. I would probably call the trait similar to
the interface HelloImpl or THello or so.
>
> class MyHelloWorld implements IHello {
> use SayHello;
> }
>
> $o = new MyHelloWorld();
> var_dump($o instanceof IHello); // bool (true)
> ?>
If that does not work, it is a bug I think.
Best regards
Stefan
>
> thx,
>
> -nathan
--
Stefan Marr
Software Languages Lab
Vrije Universiteit Brussel
Pleinlaan 2 / B-1050 Brussels / Belgium
http://soft.vub.ac.be/~smarr
Phone: +32 2 629 2974
Fax: +32 2 629 3525
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php