2013/6/27 Anthony Ferrara <ircmax...@gmail.com>

> Stas et al,
>
>
> So, the question of what is the difference between the two errors
> > remains unanswered. If the whole diff is that one of the errors has word
> > "recoverable" in the message, it's not substantial difference at all and
> > one that does not require new syntax and big change in the language.
>
>
> I'm assuming that you do know the difference between E_RECOVERABLE_ERROR
> and E_ERROR. And the difference is not trivial...
>
>
> > > Internals should not be taking sides on what's good practice and what's
> > > bad practice (if it was, why the heck was goto introduced?). Instead,
> it
> >
> > Can we please lay the goto argument to rest? The argument "goto was
> > introduced, so feature X must too, because goto was introduced" didn't
> > sound good even the first time...
>
>
> I'm absolutely not trying to say we should include this because GOTO was
> introduced. I'm trying to point out the circular nature of the argument of
> good-vs-bad practice in general...
>
>
> > > should enable today's good practice to be followed. But it should not
> > > take a stand about bad practice.
> >
> > In my opinion, we should. We should not take into the language any
> > concept that anyone considers useful in some particular piece of code.
> > PHP language is very widely used, and we should consider how it would
> > influence this huge ecosystem and if the overall effect would be
> > beneficial and justify complicating (if there is one) the whole language
> > system.
> >
> > Language is a system of thought and a system of approaching
> > communication. IMO, this means it should have some principles and not
> > just be a random bag of things that somebody at one point or another
> > decided to stick into it, they should make sense together. PHP doesn't
> > have the best reputation in this regard, but we are trying to make it
> > better, not worse.
> >
> > It does not mean we should avoid change. It means we should have good
> > reasons for change and carefully consider it. Good use cases IMO are
> > prerequisite for that.
>
>
> Of course they are. Use-cases matter. A lot.
>
> But "good practice" vs "not-good-practice" shouldn't be a significant
> factor, because your "good-practice" is different from mine. And unless we
> as a group decide to stick to one interpretation (we haven't), then it's
> kind of pointless to talk about good practice. If you want to vote based on
> it, that's your prerogative. But in general I think that thought process is
> dangerous for the community as a whole and for core...
>
>
> > > My point here is that we should be judging features by
> > > their merit alone, and not by how we would use them. We also should not
> > > be judging them based upon our preferred style, but on the overall case
> > > of what it aims to achieve.
> >
> > IMO there's no merit in the feature besides its use. That's the only
> > merit a feature could or should ever have.
>
>
> Ok, so then you agree that "best-practice" doesn't come into it at all...?
>
>
> >  > Bringing this back on point, Duck-typing is a very valid and accepted
> > > way of doing OOP. In fact most other dynamic languages use this as the
> > > basis for their OOP system. This proposal does nothing but attempt to
> >
> > In fact, most other dynamic languages don't even have parameter typing.
> > Neither Perl, Python, Ruby or Javascript have it. Let alone typing of
> > the kind you suggest. What they have we have too. Duck typing for them
> > doesn't mean what you propose - it means what we already have, checking
> > type at the point of use. Check
> > https://en.wikipedia.org/wiki/Duck_typing and see the examples - most of
> > them don't have any typechecks.
> > Referring to "most dynamic languages" while promoting this proposal is a
> > bit misleading.
> >
>
> Those other languages (all of them in fact) throw exceptions if the
> function or method does not exist. PHP hard fatals. They can live with pure
> duck-typing because their engines are designed to stay running, where ours
> is designed to fall on its face. This proposal is one attempt to bring some
> consistency and recoverability to the dynamic aspect of programming while
> providing for the ability to verify APIs at the engine level.
>
> One thing I find interesting is that I have discussed this feature with
> about 50 people at this point (quite a few at conferences and such before
> actually proposing it), and the sentiment elsewhere (not on list) was very
> predominately "this solves a ton of problems". I find it interesting that
> on-list people seem to think that I'm making the use-cases up, and that
> there's not really a problem to solve. I wish some of the other people I
> talked to would speak up here ;-)...
>

You havent talked to me, but I bring my voice in.


>
> One thing to note is who the major audience for a feature like this is.
> It's not predominately for 1st party developers (developers writing one-off
> applications). It's not predominately for 2nd party developers (developers
> writing frameworks and other applications that have few dependencies and
> are intended to be used by 1st party developers). It is primarily for 3rd
> party developers. These are developers that maintain code bases built on
> top of 2nd party code, but meant to be used by 1st party developers.
>
> What does that mean? The average one-off application builder is likely to
> not get much use out of this (it can be used, but the problems for this
> group of people are mostly solved already). The average framework core-dev
> (like Symfony or ZF) isn't going to get *much* benefit out of this either
> (it can help in some areas, and they will use it, but it's not solving
> major problems). The Drupals, Magentos and Fuel CMS's of the world. The
> people who make plugins and modules for Frameworks and CMS's.
>
> Basically, the people who's lives will get MUCH easier with something like
> this are the people who maintain code that has a lot of dependencies, and
> that other people depend on (it sits in the middle of the dependency chain,
> where code on both sides is outside of their control).
>
> So if you don't see the usefulness of this type of change, ask if you
> maintain anything significant that fits that description. If you don't,
> find someone who does and talk to them. Otherwise you may be unfairly
> judging by ignoring problems that you personally don't have...
>
> Anthony
>
> PS: I updated the RFC with a number of use-cases, including the ability to
> hint on Traits (more specifically, the API of a trait)...
>



-- 
github.com/KingCrunch

Reply via email to