开发者

isset variables created using extract function

$array = explode('/', $_SERVER['REQUEST_URI']);

$count = count($array);

extract($array, EXTR_PREFIX_ALL, 'var');

can the variables (created using extract function) be isseted automatically? to avoid "Notice: Undefined variable:" errors when error_reporting(E_ALL); is enabled.

thank you

I tried doing something of this sort, still needed to isset() whenever, the variables are used next in the code (when error_reporting(E_ALL); is enabled).

if(isset($var_0))
{    
$var_0 = filter_var($var_0, FILTER_SANITIZE_STRING);  
}
if(isset($var_1))
{
$var_1 = filter_var($var_1, FILTER_SANITIZE_STRING);
}
if(isset($var_2))
{
$var_2 = filter_var($var_2, FILTER_SANITIZE_STRING);
}
if(isset($var_3))
{
$var_3 = filter_var($var_3, FILTER_SANITIZE_STRING);
}

==========================

Alternatively, tried the one line if condition,

$var_0 = isset($var_0) ? filter_var($var_0, FILTER_SANITIZE_STRING) : '';     
$var_1 = isset($var_1) ? filter_var($var_1, FILTER_SANITIZE_STRING) : '';
$var_2 = isset($var_2) ? filter_var($var_2, FILTER_SANITIZE_STRING) : '';
$var_3 = isset($var_3) ? filter_var($var_3, FILTER_SANITIZE_STRING) : '';

while the error got subsided, but, a new problem arises i.e., variables (which are not created by extract function are getting isseted because of this one line if condition approach).

I am posting two of the routing rules (of two urls) in the website.

$pagename = "not-found.php";

//Different Routing Engine Rules follows

if ((isset($var_1)) && (($var_1 == "") || ($var_1 == "index.php"))) {


     if((isset($var_2)) || (isset($var_3)) || (isset($var_4)) || (isset($var_5)) || (isset($var_6)) || (isset($var_7)))
    {
      $pagename = "not-found.php";

    }
    else
    {

      $pagename = "default-home.php开发者_JAVA技巧";

    }
}

if (($var_1 == "login")) 
{
//echo "Login Page URL\n";      

    if((isset($var_2)) || (isset($var_3)) || (isset($var_4)) || (isset($var_5)) || (isset($var_6)) || (isset($var_7)))
    {
      $pagename = "not-found.php";
    }
    else
    {
      $pagename = "login.php";  
    }
}

include "code/" . $pagename;

any help will be appreciated, thank you


If I understand your question correctly then, no. It's still your responsibility to know what variables are available and act accordingly. You can simply disable these notices via error_reporting(E_ALL & ~E_NOTICE) for the portion of code in question.

Edit

Looking at your updated question, I think it would be helpful if you could explain what you're trying to achieve. Personally, I see the use of extract as a bit of a code smell and there may be a better way :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜