I like the naming convention of are_*.  For me personally it isn't directly
intuitive that the multiple parameters of is_* would be compared with an &&
and not an ||.


On Wed, Sep 18, 2013 at 7:50 AM, Sean Coates <s...@seancoates.com> wrote:

> > i.e. is_null($a, $b, $c) would be the same as is_null($a) && is_null($b)
> > && is_null($c)
>
> Note that this would not be semantically equivalent in this form, even if
> `is_null()` did accept multiple parameters, because of the short-circuiting
> with `&&`:
>
> <?php
>
> function are_null() {
>         foreach (func_get_args() as $a) {
>                 if ($a !== null) {
>                         return false;
>                 }
>         }
>         return true;
> }
>
> function destroy_data() { echo "DESTROYING DATA\n"; }
>
> // old form: short-circuited; data is not destroyed
> if (is_null(null) && is_null(false) && is_null(destroy_data())) {
>         echo "All null.\n";
> } else {
>         echo "Not null.\n";
> }
>
> echo "----\n";
>
> // proposed form: no short-circuit; parameters are evaluated at call time
> and data is destroyed
> if (are_null(null, false, destroy_data())) {
>         echo "Still null.\n";
> } else {
>         echo "Still not null.\n";
> }
>
>

Reply via email to