Цитаты в классах PHP Как их использовать? - PullRequest
0 голосов
/ 11 января 2012

Я хочу сделать переменные и методы в классе php.И хочу использовать двойные кавычки, как я всегда использую не в ООП.Но это не работает, это показывает ошибку.Зачем?Вот мой код:

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 ООП?

Также такая же ситуация со второй переменной $ html.Это заставляет меня менять внешние двойные кавычки на одинарные.И внутренние синглы для удвоения.Например:

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

Хорошо, я изменяю, но здесь появляется проблема # 2.

2) Он не видит значение переменной в href.Когда страница загружена, в URL появляется $url, а не http://www.somesite.com?index=$number, как я ожидаю.Как заставить его использовать значение переменной, а не ее имя?

Ответы [ 3 ]

1 голос
/ 11 января 2012

Использование одинарных и двойных кавычек не имеет ничего общего с ООП или классами.

Двойные кавычки говорят PHP оценивать содержимое, поэтому вы можете делать такие вещи, как echo "text $var text";. При использовании одинарных кавычек содержимое не оценивается, поэтому это не будет работать.

Объединение строк, как правило, дает преимущество в производительности по сравнению с двойными кавычками, поэтому одинарные кавычки, как правило, рекомендуется при комбинировании текста и переменных, как вы. Итак, рассмотрим это:

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

Обратите внимание, что вы должны избегать двойных кавычек в теге привязки. Также принято использовать двойные кавычки для значений атрибутов.

1 голос
/ 11 января 2012

Извините, вы не можете этого сделать.Это работает только для простых выражений.Смотрите здесь .когда вы используете одинарную кавычку, она не будет оценивать, поскольку она напрямую echo содержимого. Если вы используете двойную кавычку, она получит оценку. Просто!

0 голосов
/ 11 января 2012

Насколько я знаю, у вас не должно быть проблем с кавычками в PHP.

То, с чем у вас МОГУТ быть проблемы (и я не знаю, но, похоже, похоже), это неопределенные переменные.

Насколько я понимаю, $number не является нигде определенной вами переменной, также $var не является переменной. Это может быть проблемой. Когда вы переключаетесь на одинарные кавычки вместо двойных, вы включаете string"$ number" и string"$ var". Когда вы получаете двойные кавычки, он ищет переменную, которую, я полагаю, она не может найти.

Надеюсь, это поможет.

ОБНОВЛЕНИЕ - просто перечитываю ваши вопросы. Ваш второй вопрос заключается в том, что вы используете переменную $var, а не $url, которую вы определили как переменную класса. Во-вторых, я не уверен (я могу ошибаться), что вы можете использовать переменные класса в других переменных класса, как вы это сделали.

...