Re: Re: Re: Re: __get() not reentrant?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



<posted & mailed>

Jochem Maas wrote:
>>>On Sun, May 22, 2005 3:24 pm, Christopher J. Bottaro said:
>>>
>>>>And what would make it any different from a normal recursive function?
>>>
>>>The fact that *ANY* attempt to access a mis-typed property would kick in
>>>a __get() call, and that's too frickin' easy to happen in code that's too
>>>easy to fly by QA in large-scale applications springs to mind...
> 
> don't forget the noob factor - a noob could spend days trying to figure
> out WTF is going on in such a situation..... we might even lose him to ASP
> in that time :-/

I didn't realize that PHP had such an emphasis on the "noob factor".

>>>Not saying you're "wrong" or they're "right" just that it's not quite as
>>>simple as a normal recursive function or loop iteration.
>> 
>> 
>> I completely disagree.  I don't mean any offense to anyone here, but I
>> find it kind of ridiculous for a language to restrict itself that like in
>> this
>> case.  Its insulting to our intelligence as programmers.
>> 
> 
> er whatever, interesting to see how easily you are insulted - I mean its a
> programming language with a certain kind of implementation, which may not
> be perfect, but I don't think they we're thinking of you when they wrote
> it.

I just don't like being talked down to, who does?  You can be immature and
poke fun at my choice of words if you want.  All I meant to say is that I
find it weird that PHP assumes that I don't understand how recursion works.

>>>>Every recursive function runs the risk of going into infinite loop if
>>>>the programmer doesn't understand the basic concept (or makes a silly
>>>>mistake).
>>>
>>>Just saying it's an easier silly mistake to mis-type: $whatever->fooo
>>>instead of $whatever->foo and have that escape QA somehow.
>>>
>>>
>>>>Loops run the risk of going on indefinitely as well.  Maybe PHP should
>>>>disable all forms of loops/recursion to protect the programmers from
>>>>themselves.
>>>
>>>That does seem a bit excessive...
>> 
>> 
>> I was making a point.  I don't see why recursion is allowed in every
>> other
>> function except for __get().  I think your argument is weak about
>> protecting people from typos.  If PHP wanted to protect people from
>> typos, it should force you to declare your variables.
>> 
> 
> you think its a weak argument, maybe you are missing the point - ask
> yourself what the average level of php programmers is? part of the php
> philosophy is about making/keeping php accessible.

Again, I didn't realize was so geared towards "noobs".

> I think you will find that if you we're forced to declare you [class]
> variables that your __get() implementation would stop working they way it
> does now...

No, I use __get() to provide property like access to calculated values. 
There is no corresponding class var for these values.  If I wanted access
to class vars, I'd just declare them and then __get() wouldn't be used.

>>>Maybe __get() should allow recursion and let the developer worry about
>>>infinite recursion.
> 
> Is that the 11th commandment?

I have no idea what you are talking about.  I meant to say, "Maybe __get()'s
implicit invocation should work like normal functions."

>>>But, today, it doesn't, so deal with it and move on.
> 
> ditto.

Do yall really think I have halted my work because of this?  I just want to
discuss it.

>> I was bringing the to the table a discussion of the current behavior of
>> __get().  I proposed that I might be broken or maybe should be changed,
>> and
> 
> maybe you are broken, hard to tell from here.

Way to make me look stupid because I made a typo.
 
>> you start insulting my abilities as a programmer and suggest that we
>> shouldn't consider "moving forward" and just deal with what we have?
>> 
> 
> I think Richard is a fairly intelligent person, if he had been insulting
> you I'm quite sure that he would have done a much better job ;-)

Thats great, I'm sure he's the reigning "cut down contest" champ on this
list.  I don't care.  Like I said, I don't like being talked down to.  I
found it very unnecessarily presumptuous of him to say stuff like "without
knowing anything about you, I assume you have made bad design decisions,
painted yourself in a corner, etc".  What the hell does any of that have to
do with the discussion?

>> Painted myself into this corner?  Why?  Because I think its easier to
>> write
>> $this->myvar than it is to write $this->attrs['myvar']?  Its PHP's job to
> 
> given the number of chars in the email you wrote you could have written
> the extra "attrs['']" (9 chars) god knows how many times,

Yeah, I've written more in these threads than the entire class that spawned
them.  ?...?.......?

> besides if you 
> admit you can solve all your issues by writing the 'long' form then your
> argument
> [below] that you need to call __get() from inside __get() in order to
> [retrieve
> 1 or more calculated values to calculate the originally requested
> attribute sounds bogus.

Err, not following ya.  The point is that I don't want to use the long form. 
__get() is recursive when using the long form.  Its the implicit invocation
that isn't.

> php isn't perfect, neither are you - find a balance, get over it.

Sigh.  PHP's motto:  "Get over it, we oppose change."  (According to you and
Richard).

>> make my life easier and more convenient.
> 
> I didn't realise php had a job, I thought it was me who had the job and
> php was what I used to accomplish it....

Clever, I personified PHP and you pointed out that PHP isn't a person.  (in
Stewie's voice) Clever girl you are!  (I don't mean to say you are a girl,
I just thought of that family guy episode).

>>>Obviously, it's entirely possible that your Design is the most elegant
>>>beautiful disciplined bit of code since John von Nueman...  But it's more
>>>likely, without knowing anything about you, that you've come up with this
>>>as a result of some bad Design decisions.
>>>
>>>Review your Design. :-)

> notice the fecking smiley [hint: Richard is trying to help you, trying to
> get into an argument with him is making you look bad.]

I already addressed this.
 
>> Wow, how pompous of you.  Bad design, huh?  Since when is it bad design
>> to
>> calculate attribute values on the fly?  Many "cookbook" style books have
> 
> and 'cooking' is the same as 'engineering'? (I think I'll try something
> new with the cement today....)

You're right, all those "cookbooks" are stupid.
 
>> Speaking of "good design", Python's __getattr__() behaves how I expect.
> 
> use it then?

I would if I could, but I can't.  Besides, PHP is pretty fun/easy to program
with, I'd say its my 2nd favorite language right now.  Again, I don't see
whats wrong with trying to get fixed what I think is wrong.

OK, all the subtle stabs at each other (and yes, they are subtle) aside, you
brought up some good points about __get()'s behavior if it's implicit
invocation allowed for recursion.  Thats all I really wanted, thanks for
that.

-- C

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux