Re: not_null function
| From: | Tjerk Meesters | Date: | Thu, 03 Jul 2014 10:24:53 +0000 |
| Subject: | Re: not_null function | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-75211@lists.php.net to get a copy of this message | ||
Hi Bart,
On Thu, Jul 3, 2014 at 5:40 PM, Xen <xen@dds.nl> wrote:
> Heya,
>
> I was just wondering about something.
>
> It seems way more natural and flowing to have and use a "not_null"
> function in addition to some "is_null" that currently exists.
>
> The reason is that most of the time you are not checking null condition,
> you are really checking the non-null condition.
>
> But a line like "if (!is_null($a))" feels like there are two verbs in it.
>
For this particular case I would use this: if (isset($a))
For undefined variables it will return
false and for defined variables
it's equivalent to the expression $a !== null.
> It is like you are saying "if $a is not is null".
>
> It is different for the "empty" function because there is no "is_" prefix
> in it. So "if (!empty($a)) feels completely sane.
>
> So generally I will *want* to test a null condition but I just hope my
> variable won't contain anything that evaluates to false and just test "if
> ($a)".
>
> If there was a not_null() I would use that instead, because "if
> (not_null($a))" only contains one "verb" instead of two.
>
> And I would define that helper function myself, but I don't want to write
> code that another person would not be able to run just because not_null is
> not defined in his library.
>
> --------
> In general I believe this is rather a problematic feature of most
> languages.
>
> The "if" statement implies a verb, but many functions and methods also
> contain a verb in their name.
>
> This seems to be only the case for the "is" verb. I know in my language
> (Dutch) the "to be" verb (zijn) is treated differently from all other verbs
> when it comes to the adverb/adjective difference.
>
> When you state "I am good" the adjective is used, but "I work good" should
> be "I work well". The adjective applies to the subject "I" but the adverb
> applies to the verb "work". I guess there are all sorts of mixtures, "I am
> well" is also used. But I think it is improper.
>
> Thus, "if (has_members())" feels natural because it uses a different verb
> replacing the default "is".
>
> But "if (is_null())" feels odd because "if (null())" would say the same
> thing only more concise and more natural as far as if statements go, or at
> least it seems that way to me.
>
> Personally I try to avoid those "is_something" functions whenever I can.
> It is not so much an issue if it is some rarely used library call.
>
> Like WordPress has functions like "is_single()" which returns a boolean
> indicating whether the currently loaded page is a single post display.
>
> But notice that "if (single())" would give very little information as to
> what you were actually testing. There is no parameter, and just "single"
> would be so general that it would completely obfuscate the fact that it had
> to do with WordPress. It would have to become "page_is_single()" although
> "page" is (improperly) dedicated to a special type of post that sits
> outside of the regular post structure. They ought to rename it to
> "staticpage" or "static". "page_is_single" and
> "page_is_home" and
> "page_is_category" would be more descriptive.
>
> But in any case, this language incongruency is most annoying with core
> functions you have to use all the time, or would be using all the time if
> they were okay.
>
> So my suggestion would be to consider introducing at least "not_null".
> "isset" seems to be a different category, if only because the verb is not
> visually separated from the condition.
>
> So "if (isnull($a))" would again be more natural. But because the verb is
> visually separated using the underscore, you get two verbs in your mind.
> Perhaps creating an "isnull" alias and then deprecating the "is_null"
> function would be best.
>
There's also is_array(), is_bool(), etc. so changing only
is_null()
would be a big wtf ;-)
You could propose to change isset() into is_set() though =D
> Regards,
>
> Bart Schouten
>
> ps. please "reply all" for I am not subscribed as of yet.
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
--
Tjerk