On Tue, Apr 24, 2012 at 10:10 PM, Anthony Ferrara <ircmax...@gmail.com> wrote:
> There's already an __isset() magic method that does exactly this:
> http://us2.php.net/manual/en/language.oop5.overloading.php#object.isset

I know.

In my opinion, that was a mistake, and if I catch anyone on my team
using that, I will have to slap them around some ;-)

If you think consistency is paramount, I'm not going to argue with
that, nor would I persist in arguing against this feature...

>> I would suggest making the unset-method optional for properties, and
>> the default behavior for unset($time->Hours) would be
>> $time->Hours=null when no unset-method is implemented.
>
> Agree there.  The only other sane way of handling that would be to
> raise an error "trying to unset an accessor property"...  Or it would
> try to unset the true public variable by that name, and hence
> unsetting nothing...

Yeah, that was my first thought - but it doesn't seem very "php" to
throw errors when you're trying to do something that can behave in a
meaningful way without forcing you to write tedious boilerplate.

>> The "readonly" keyword in my opinion is redundant - properties are
>> naturally read-only (or write-only) if you implement only the get or
>> set method, same as any other language. No need to break common
>> language conventions here.
>
> Well, it's redundant for a single class.  It's not redundant with
> inheritance.  Otherwise a child class could define a writer for that
> property, which may be undesirable...  Then again, what are the use
> cases for an enforced read-only (or write only for that matter)...?

In my opinion, that's the kind of thinking that made Java overly ceremonious.

If I have a real reason to make something writable that wasn't
writable in the base-class, why make that harder than it has to be?

We're talking about a tiny fraction of cases where this is even a real
concern in the first-place - things that are read-only tend to be
read-only for a reason... for example, if you have a property that
returns the number of users currently active on your website, or the
current date/time, how or why would you make those writable?

I think confusing things with yet another keyword is completely
overkill for such a small amount of marginal cases.

Let's not encourage artificial limitations on code extensibility, for
things that < 1% of users are likely to abuse in a lifetime.

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

Reply via email to