2012-01-14 22 views
0

我正在制作一个PHP脚本,其中使用了类布尔变量,但由于某种原因,当我想将其设置为true时,它不起作用:/无法在PHP中设置变量为true

<?php 


class TinyFram { 



    private $urlMatched; 


    public function get($url, $method){ 

     $urlR = str_replace('/', '\/', $url); 
     $urlR = '^' . $urlR . '\/?$'; 

     if (preg_match("/$urlR/i", $reqURI, $rMatch)) { 
      $this->urlMatched = true; // I SET IT TO TRUE HERE 
      $method($rMatch); 
     } 
     if(!$this->urlMatched) { 
      echo var_dump($this->urlMatched); // BUT HERE IT SHOWS AS FALSE 
      notFound($rMatch); 
     } 
    } 

} 

?> 

我做错了什么?谢谢!

+2

当第二个if条件通过时,你只能执行'var_dump',但是你有这样的条件('!this-> urlMatched)'。所以我不确定你为什么感到惊讶! – 2012-01-14 13:12:43

+0

另外,你可能想'preg_quote'你的'$ url' ... – Wrikken 2012-01-14 13:14:11

+0

也许我的RegExp也是错误的。但是IDK为什么不把它设置为'true',因为'preg_match'匹配和'$ method($ rMatch);'被调用 – pmerino 2012-01-14 13:19:30

回答

2

您的preg_match不匹配,所以变量永远不会被设置为true。

+0

它被调用,因为'$ method($ rMatch);'被调用 – pmerino 2012-01-14 13:16:35

1

var_dump处于检查$ this-> urlMatched是否为虚假值(false,0,'',null)的条件中。当然,它会显示为假。

btw:var_dump不需要在它前面有回声。