Php function argument error suppression, empty() isset() emulation

后端 未结 14 659
执笔经年
执笔经年 2021-01-11 17:32

I\'m pretty sure the answer to this question is no, but in case there\'s some PHP guru

is it possible to write a function in a way where invalid arguments or non exi

14条回答
  •  南方客
    南方客 (楼主)
    2021-01-11 18:25

    While the answer to the original question is "no", there is an options no one has mentioned.

    When you use the @ sign, all PHP is doing is overriding the error_reporting level and temporarily setting it to zero. You can use "ini_restore('error_reporting');" to set it back to whatever it was before the @ was used.

    This was useful to me in the situation where I wanted to write a convenience function to check and see if a variable was set, and had some other properties as well, otherwise, return a default value. But, sending an unset variable through caused a PHP notice, so I used the @ to suppress that, but then set error_reporting back to the original value inside the function.

    Something like:

    $var = @foo($bar);
    
    function foo($test_var)
    {
         ini_restore('error_reporting');
    
         if(is_set($test_var) && strlen($test_var))
         {
              return $test_var;
         }
         else
         {
              return -1;
         }
    }
    

    So, in the case above, if $bar is not set, I won't get an error when I call foo() with a non-existent variable. However, I will get an error from within the function where I mistakenly typed is_set instead of isset.

    This could be a useful option covering what the original question was asking in spirit, if not in actual fact.

提交回复
热议问题