我想在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
。如何让他使用变量值而不是它的名字?
答案 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
,您已将其定义为类变量。其次,我不确定(我可能错了)你可以在其他类变量中使用类变量。