PHP类中的引用如何使用它们?

时间:2012-01-11 15:01:47

标签: php url escaping

我想在php类中创建变量和方法。并且想要使用双引号,因为我总是在OOP中使用。但它不起作用,它显示错误。为什么?这是我的代码:

class myClass {
     public $url = "http://www.somesite.com?index=$number";     // this var has url as a value  

     public $html = "<div>                                      // this var is an HTML code with $url var in href
                        <a href='$url'>Link</a>
                     </div>"; 

     public function echoHTML() {                              // and this is method to echo html code
          echo $this->html;
     }
}

$obj = new myClass();
$obj->echoHTML();

问题是:

1)如果在这里使用双引号,则显示错误

public $url = "http://www.somesite.com?index=$number";

当我更改单引号的双引号时,它可以正常工作

public $url = 'http://www.somesite.com?index=$number';

为什么呢?我以前总是在这种非OPP编码中使用双引号,并且不想改变我的做法。或者我必须在PHP OOP中使用单引号?

与第二个变量$ html的情况相同。它让我改变单引号的外部双引号。内在的单个qoutes加倍。像这样:

public $html = '<div>                                      
                    <a href="$url">Link</a>
                </div>';

好的,我改变了,但这里出现问题#2。

2)它没有在href中看到变量的值。加载页面时,网址中有$url,但不是http://www.somesite.com?index=$number。如何让他使用变量值而不是它的名字?

3 个答案:

答案 0 :(得分:1)

单引号和双引号的使用与OOP或类无关。

双引号告诉PHP评估内容,因此您可以执行echo "text $var text";之类的操作。当您使用单引号时,不会评估内容,因此这不起作用。

连接字符串通常比双引号具有性能优势,因此在组合文本和变量时,通常建议使用单引号。所以考虑一下:

public $url  = 'http://www.somesite.com?index=' . $number;
public $html = '<div><a href=\"' . $url . '\">Link</a></div>';

请注意,您必须转义锚标记中的双引号。对于属性值使用双引号也是惯例。

答案 1 :(得分:1)

抱歉,你做不到。它只适用于简单的表达式。见here。 当你使用单引号时,它不会直接评估 echo 内容。如果你使用双引号,它将得到evaluate.Simple!

答案 2 :(得分:0)

据我所知,PHP中的引号不应该有任何问题。

你可能遇到的问题(我不知道,但看起来很可能)是未定义的变量。

据我所知,$number不是您定义的任何变量,$var也不是变量。这可能是个问题。当您切换到单引号而不是双引号时,您将包含字符串“$ number”和字符串“$ var”。当你有双引号时,它正在寻找变量,我认为它无法找到。

希望这有帮助。

更新 - 只需回顾您的问题。您的第二个问题是因为您使用的变量$var而不是$url,您已将其定义为类变量。其次,我不确定(我可能错了)你可以在其他类变量中使用类变量。