Я пытаюсь использовать функцию предупреждения javascript в коде php для отображения сообщения на стороне клиента.
//Show concept detail
public function showConceptDetail($concept){
$msg = "";
switch ($concept) {
case 'class':
$msg = 'Hey, I am single line with spaces';
break;
default:
break;
}
return "alert('".$msg."')";
}
public function showListConcept(){
$a= '$this->showConceptDetail()';
$list = <<<LIST
<ul>
<li><a href = "#" onClick= {$this->showConceptDetail('class')} >Class </a></li>
<li><a href = "#">Object </a></li>
<li><a href = "#">Member Variable </a></li>
<li><a href = "#">Member function</a></li>
<li><a href = "#">Inheritance</a></li>
<li><a href = "#">Parent class</a></li>
<li><a href = "#">Child Class</a></li>
<li><a href = "#">Polymorphism</a></li>
<li><a href = "#">Overloading</a></li>
<li><a href = "#">Data Abstraction</a></li>
<li><a href = "#">Encapsulation</a></li>
<li><a href = "#">Constructor</a></li>
<li><a href = "#">Destructor</a></li>
</ul>
LIST;
echo "List of POO concepts: ".$list;
}
Когда я пытаюсь использовать функцию showListConcepts:
$a = new POOConcept();
$a->showListConcept();
Каждый раз, когда я проверяю источник, я получаю странный результат:
<a href = "#" onclick = "alert('Class" − = "" this = "" is = "" a = "" programmer-defined = "" data = "" type, = "" which = "" includes = "" local = "" functions = "" as = "" well = "" data. = "" you = "" can = "" think = "" of = "" class = "" template = "" for = "" making = "" many = "" instances = "" the = "" same = "" kind = "" (or = "" class) = "" object.') = "">Class </a>
Каждый пробел в сообщении функции предупреждения заменяется на = ""; Я не могу понять, что происходит.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я скопировал и вставил его и запустил предоставленный вами код. Не было никаких проблем. Я заметил, что здесь и сейчас документы не в кавычках. (http://php.net/manual/en/language.types.string.php) В остальном проблем вроде нет. Должна быть какая-то другая проблема. Что еще происходит, что обрабатывает вывод? У вас есть выходное сообщение где-нибудь еще в вашем коде или комментариях?
Вот мой полный пример файла с именем index.php, за которым следует вывод в командной строке.
<?php
class abc
{
//Show concept detail
public function showConceptDetail($concept){
$msg = "";
switch ($concept) {
case 'class':
$msg = 'Hey, I am single line with spaces';
break;
default:
break;
}
return "alert('".$msg."')";
}
public function showListConcept(){
$a= '$this->showConceptDetail()';
$list = <<<LIST
<ul>
<li><a href = "#" onClick= {$this->showConceptDetail('class')} >Class </a></li>
<li><a href = "#">Object </a></li>
<li><a href = "#">Member Variable </a></li>
<li><a href = "#">Member function</a></li>
<li><a href = "#">Inheritance</a></li>
<li><a href = "#">Parent class</a></li>
<li><a href = "#">Child Class</a></li>
<li><a href = "#">Polymorphism</a></li>
<li><a href = "#">Overloading</a></li>
<li><a href = "#">Data Abstraction</a></li>
<li><a href = "#">Encapsulation</a></li>
<li><a href = "#">Constructor</a></li>
<li><a href = "#">Destructor</a></li>
</ul>
LIST;
echo "List of POO concepts: ".$list;
}
}
$abc = new abc();
$abc->showListConcept();
?>
Затем с помощью командной строки.
sandbox>php index.php
List of POO concepts: <ul>
<li><a href = "#" onClick= alert('Hey, I am single line with spaces') >Class </a></li>
<li><a href = "#">Object </a></li>
<li><a href = "#">Member Variable </a></li>
<li><a href = "#">Member function</a></li>
<li><a href = "#">Inheritance</a></li>
<li><a href = "#">Parent class</a></li>
<li><a href = "#">Child Class</a></li>
<li><a href = "#">Polymorphism</a></li>
<li><a href = "#">Overloading</a></li>
<li><a href = "#">Data Abstraction</a></li>
<li><a href = "#">Encapsulation</a></li>
<li><a href = "#">Constructor</a></li>
<li><a href = "#">Destructor</a></li>
</ul>
На второй мысли: Что произойдет, если вы заключите предупреждение в кавычки? Парсеры HTML автоматически добавляют = "", если нет кавычек. onClick = "{$ this-> showConceptDetail ('class')}"