我有一个复杂的HTML标记,有许多属性,它出现在代码的不同部分。
示例:
<div class="blabla" data-test="blablabla" ... data-another-attribute="blabla" >
<some complex html code ... >
</div>
我不想在代码的不同部分重复此<div></div>
及其所有属性,因为它在开发过程中经常发生变化。
如果我创建这样的函数(PHP中的示例):
function myDivStart() { ?>
<div class="blabla" data-attribute="blablabla" data-another-attribute="blabla">
<?php }
然后我的结果代码看起来像
<?php myDivStart(); ?>
<some html code ... >
</div>
并且整理</div>
看起来有点不合适,因为没有视觉开始<div>
。我的文本编辑器也没有正确解析它,语法高亮显示混乱。
然后,如果我为结束</div>
创建另一个函数,它确实是一个非常愚蠢的函数:
function myDivEnd() { ?>
</div>
<?php }
并将原始代码转换为
<?php myDivStart(); ?>
<some html code ... >
<?php myDivEnd(); ?>
这可以解决语法高亮问题,但是关闭这样一个愚蠢的函数仍然感觉非常不洁净。
UPDATE:将HTML代码存储在变量中并将其传递给函数并不能真正解决问题,因为变量中的HTML无法通过语法高亮显示正确解析。
$myHTML = '<a href="...">A very long and complex piece of html</a>';
<?php myDiv($myHTML); ?>
我的文本编辑器没有语法高亮显示。
并且执行以下操作也会使代码无序,因为$ myHTML代码出现在<div>
之前,实际上在逻辑上属于它之后。
$myHTML = ?>
<a href="...">A very long and complex piece of html</a>
<?php ;
myDiv($myHTML);
是否有任何模式可以解决这个问题?
答案 0 :(得分:1)
如果它始终是相同的标记,则可以使用变量或常量而不是函数。
E.g。
$openTag = "<div class=\"blabla\" data-test=\"blablabla\" ... data-another-attribute=\"blabla\" >";
$closeTag = "</div>";
如果您拥有该标签的不同部分,那么您可以确实创建一个函数,例如:
function openingDiv($class) {
return "<div class=\"$class\" data-test=\"blablabla\" ... data-another-attribute=\"blabla\" >"
}
function closingDiv() {
return "</div>";
}
你也可以让它变得更复杂:
function wrapContentInDiv($content) {
return "<div class=\"$class\" data-test=\"blablabla\" ... data-another-attribute=\"blabla\" >$content</div>";
}
示例用途:
<?php
$openTag = "<div class=\"blabla\" data-test=\"blablabla\" ... data-another-attribute=\"blabla\" >";
$closeTag = "</div>";
?>
<leading html>
....
<?php echo $openTag ?>
<some html here>
<?php echo $closeTag ?>
...
<?php echo $openTag ?>
<some other html here>
<?php echo $closeTag ?>
<trailing html>
您可以更进一步,并在单独的php文件中定义您的代码:
e.g。的的config.php 强>
然后你可以:
<?php
require_once("config.php")
?>
...
更新:
您还可以使用模板,例如档案 complexDiv.php
<div class="blabla" data-test="blablabla" ... data-another-attribute="blabla" >
使用如下:
<leading html>
....
<?php //Set any parameters that complexDiv.php needs here
include 'complexDiv.php'
?>
<some html here>
</div>
...
<?php include 'complexDiv.php' ?>
<some other html here>
</div>
<trailing html>
我怀疑,不久之后你会意识到它值得切换到模板引擎,就像聪明的刀片一样。
答案 1 :(得分:0)
这取决于some HTML code
是什么,但你可以做这样的伪代码
$some_html=''; //your html code goes here as a string
myDiv($some_html);
function myDiv( $arg ){
echo <div class="blabla" data-attribute="blablabla" data-another-attribute="blabla">
echo $arg;
echo </div>
}
答案 2 :(得分:0)
您可以先在另一个文件上准备HTML,并将该文件包含在div标签等待它们包装您的内容的函数中。希望能帮助到你。
function wrapperDiv() {
$html = '';
$html .= '<div class="blabla" data-test="blablabla" ... data-another-attribute="blabla" >';
$html .= include_once 'body.php';
$html .= '</div>';
return $html;
}
wrapperDiv();