Функция предупреждения Javascript, встроенная в php, имеет проблемы с интерпретацией сообщения на стороне клиента

Я пытаюсь использовать функцию предупреждения 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>

Каждый пробел в сообщении функции предупреждения заменяется на = ""; Я не могу понять, что происходит.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я скопировал и вставил его и запустил предоставленный вами код. Не было никаких проблем. Я заметил, что здесь и сейчас документы не в кавычках. (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')}"

Другие вопросы по теме