将 if & isset 合并为一个函数


combine if & isset into one function

有没有办法将if函数和isset函数(或其他函数)组合成一个函数。

例如:

if(isset($_GET['test'])){
    echo "It exists";
}

exitsts($_GET['test']){
    echo "It exists";
}

我在谷歌和stackoverflow上搜索,并使用多种方式来描述它。但没有解决方案。

那么有解决方案吗?

提前感谢!

布拉姆·汉默

不,这是不可能的。If 不是函数,而是语法元素。通常在大多数编程语言中,您都有函数,它们接受值并返回值(并且可能会在此过程中背后做一些事情)和语法元素,可用于构建代码并使其以某些方式运行,例如分支(if-then-else),循环(for,while等)。大多数语言的区别很简单:如果它背后有一个代码块,那么它是一个语法元素,如果它以某种方式被调用,它是一个函数。但是,这可能不适用于所有语言。

通常不可能添加自己的语法元素,除非语言通过某些元编程工具(如宏或其他用于扩展语言的强大工具)明确允许它。据我所知,PHP不提供任何此类工具。为不提供开箱即用的语言获取它们的一种方法是使用额外的预处理器,例如 M4。但是,这很少有用。

某些语言还允许将代码块视为值,因此在这种情况下,您可以像语法元素类似的方式使用函数,将尚未评估的代码传递给它们。如果代码块不能直接使用,也许该语言提供了匿名函数或匿名类,可以用来模拟这一点。然而,通常这些模拟的控制结构并不像内置的控制结构那么好看。我不确定PHP是否允许匿名函数或类,你可以构建一些你想要的结构,但它看起来会很丑。

创建自定义函数:

   function exitsts($var){
        if(isset($var)){
            return "It exists";
        }
        else{
            return "doesn't exsits";
        }
    }

然后进行检查:

echo exitsts($_GET['test']);

有,使用空

if(!empty($_GET['test'])){
    /* matches
    "" (an empty string)
    0 (0 as an integer)
    0.0 (0 as a float)
    "0" (0 as a string)
    NULL
    FALSE
    array() (an empty array)
    var $var; (a variable declared, but without a value in a class)
    */
}