Пользовательские теги HTML в PHP - PullRequest
0 голосов
/ 24 ноября 2011

Когда я играл с Joomla!Исходный код, я видел такой код (или похожий на этот, я не совсем уверен, так как это было некоторое время назад):

<juc:place name="module" some-other-attributes/>

Я не говорю, что это было в точности как выше, ноНа самом деле я был удивлен, когда увидел пользовательские теги, подобные Asp.NET:

<asp:Label ID="lblLabel" runat="server"/>

Теперь мне интересно, как добиться того же или подобного в PHP, как они это делали в Asp.NET.Есть ли библиотека для фреймворка для этого или так далее?

Нужно ли мне писать парсер, который анализирует мой php-код и ищет такие теги и заменяет их на то, что соответствует Asp.NET, заменяет <asp:Label/> на <span/>

Мои личные предпочтения:

Мне нравится то, что делал Asp.NET, отделяя программный код от представления дизайна или HTML от кода C #.А использование серверных элементов управления asp.net позволяет разработчику легко получить доступ к элементу управления html из кода.Это звучит как разделение интересов, и мне интересно, есть ли какой-нибудь проект или способ, который уже сделал то же самое?

Ответы [ 3 ]

1 голос
/ 24 ноября 2011

В качестве альтернативы, вы можете использовать MVC-фреймворк (Zend Framework, Codeigniter или аналогичный), который разделяет ваши интересы.

Как уже говорилось, SMARTY - это движок шаблонов, который выполняет почти все, что выпосле, но это только одна часть головоломки.Абстрагирование слоя доступа к данным также является хорошей идеей.

Вы также можете включить короткие теги в конфигурации вашего сервера, а затем даже привести в порядок код презентации с помощью чего-то вроде ...

<html>
    <head>
    ...
    </head>
    <body>
        <?= "Hello, world!" ?>
    </body>
</html>
1 голос
/ 24 ноября 2011

Если вы используете подход, в котором уровень представления хранится отдельно от логики выполнения (например, движка шаблонов), тогда довольно просто создать анализатор, который ищет определенный код в HTML и заменяет его другим способом.Вы можете создать свой собственный язык «SMARTY».

Однако, если ваш код - просто «исполняемый PHP» без разделения слоев, вы не сможете делать такие замены (так как он выполняется непосредственно скриптовым движком PHP),Под «исполняемым php» я подразумеваю что-то вроде этого:

<html>
  <head>
  ...
  </head>
  <body>
  <?php echo "Hello world"?>
  </body>
 </html>
0 голосов
/ 10 июня 2012

Вы можете попробовать SimpleHTMLDOM .Затем вы можете запустить что-то вроде ...

$html = new simple_html_dom();
$html->load_file(fileToParse.html');
foreach($html->find('tagToFind') as $element){
    $element->tag='span';
}

Это должно работать.

Возможно, вы захотите взглянуть на Создание пользовательских тегов HTML для CMS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...