Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:75209 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 4318 invoked from network); 3 Jul 2014 10:15:20 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 Jul 2014 10:15:20 -0000 Received: from [127.0.0.1] ([127.0.0.1:13304]) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ECSTREAM id BB/9C-47713-73D25B35 for ; Thu, 03 Jul 2014 06:15:19 -0400 Authentication-Results: pb1.pair.com smtp.mail=xen@dds.nl; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=xen@dds.nl; sender-id=unknown Received-SPF: error (pb1.pair.com: domain dds.nl from 85.17.251.144 cause and error) X-PHP-List-Original-Sender: xen@dds.nl X-Host-Fingerprint: 85.17.251.144 smtp.dds.nl Linux 2.6 Received: from [85.17.251.144] ([85.17.251.144:42440] helo=montblanc.dds.nl) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id DB/0B-47713-8F425B35 for ; Thu, 03 Jul 2014 05:40:10 -0400 Received: from swan.dds.nl (swan.dds.nl [85.17.251.134]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by montblanc.dds.nl (Postfix) with ESMTPS id 514C86E0729 for ; Thu, 3 Jul 2014 11:27:30 +0200 (CEST) Date: Thu, 3 Jul 2014 11:40:05 +0200 (CEST) To: internals@lists.php.net Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=UTF-8 X-Virus-Scanned: clamav-milter 0.97.8 at montblanc X-Virus-Status: Clean Subject: not_null function From: xen@dds.nl (Xen) 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. 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. Regards, Bart Schouten ps. please "reply all" for I am not subscribed as of yet.