On 2010-12-10, Nathan Nobbe <quickshif...@gmail.com> wrote:
> --0016e6dbe7fb8861a1049712ad63
> Content-Type: text/plain; charset=UTF-8
>
> On Fri, Dec 10, 2010 at 11:04 AM, Chad Fulton <chadful...@gmail.com> wrote:
>
> > On Fri, Dec 10, 2010 at 9:29 AM, Nathan Nobbe <quickshif...@gmail.com>
> > wrote:
> > > On Fri, Dec 10, 2010 at 10:15 AM, Martin Wernstahl <m4r...@gmail.com>
> > wrote:
> > >
> > > > First i have to say that I am not a PHP internals developer, but as a
> > user
> > > > I think it would maybe be better to just let the trait use the
> > implements
> > > > keyword, and "copy" that to the classes utilizing the trait?
> > > >
> > >
> > > This is actually in the RFC as a rejected proposal
> > >
> > > http://wiki.php.net/rfc/traits#rejected_features
> > >
> > > But what I'm talking about is something different.  We're not trying to
> > say
> > > 'these are the methods implemented in the trait', rather, 'this trait
> > > expects a class it is used with to be of a certain type or implement a
> > > certain interface' for the trait to do its job.
> > >
> > > -nathan
> > >
> >
> > Shouldn't the burden be on the programmer to make sure the trait works
> > with the class using it rather than on the compiler? If they try to
> > use a trait that requires methods that don't exist, it will error out
> > anyway, so it won't be difficult to debug.
>
> Well I know PHP is a dynamic language but what about all the compile time
> features that have come along over the years.  The abstract keyword for
> example vs. the PHP4 way of implementing an 'abstract' method which was
> triggering an error in the default implementation in a base class.
>
> One of the main things a lot of PHP programmers I've worked with hate is
> waiting for code to hit production and encountering a runtime error w/
> something that could have been caught at compile time.  I know the notion of
> compile time in a scripting language like PHP is much less removed from that
> of C++, Java etc, however there is a notion of it there, obviously.

To me, putting this into the language feels like overkill.

Unless you're using an opcode cache, the notion of compile time as a
differentiation from runtime in PHP has little relevance -- you still
only find out when the script executes.

There's already a way to mitigate this as well: write a testing suite
for your application, and exercise it often. If you write your tests
well (targeting the discrete behaviors of your application), then most
likely they'll catch such errors -- allowing you to fix them before you
deploy.

-- 
Matthew Weier O'Phinney
Project Lead            | matt...@zend.com
Zend Framework          | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to