On Tue, Aug 19, 2003 at 05:32:41PM -0500, Shaun Thomas wrote:
> > > 2.) variable_exists can not be written in PHP.
> > 
> > And it is not necessary, because get_defined_vars() exists.
> 
> Which is just plain gross, but let's continue on...

How many local variables do you have? That array shouldn't be too big.

> > Noone ever said said that. 
> 
> Actually Zeev did.

No, he did not. He said ``Don't use null as a value'', which is correct.
It is not - it's nothing.

> > Still no need to test for their existance, imo.
> 
> I agree.  Apparently you missed this part:

If it's not needed... why implement it?

> > Since your presumptions are flawed, the conclusion is also.
> > And, given good design, where would you need it?
> 
> Why do things always come down to the wonderfully nebulous "good 
> design"?  What is "good design"?  And now that you've demonstrated that 
> the isset+is_null check doesn't work, the issue becomes even more 
> prevalent - since there is now no way to escape.

Wrong. array_key_exists('var', get_defined_vars()).

And about good design... you asked for it:
Good design, in my opinion:
Encapsulate. If noone messes around with your variables from outside,
you won't get variables that you did not define, and so - no need to
check for them.

> Personally, I would never use variable_exists.  But if you want to say
> get_defined_vars works, why do we have function_exists?  I could just as
> easily say, "Use get_defined_functions and check for the function you
> want.  function_exists is a waste of time and bad design."  It's a
> completely arbitrary and subjective position.  The inconsistency itself
> should say something about this issue.
> 
> So I ask this:
> 
> get_declared_classes, class_exists
> get_defined_functions, function_exist
> get_defined_constants, defined
> get_defined_vars, ???

classes, functions, constants are available everywhere, not just in the 
current function. Including a foreign library adds classes, functions
and constants, but it won't mess with your variables if you encapsulate
properly. Additionally, for variables: isset() suffices. If a variable is 
null, you can treat it as nonexistant.

> Or does PHP win the language inconsistency award?

It already does that (naming(strpos, str_replace), argument order), but
that has nothing to do with variable_exists. (indeed, this name would
add inconsistency, because it's called var everywhere else ;))

This is my last mail to internals about this topic, it's been discussed
enough imo.

-- 
Regards,
Stefan Walk
<[EMAIL PROTECTED]>

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

Reply via email to