On 13.05.2013 21:26, Max Semenik wrote:
Hi, I've seen recently a lot of code like this:
$html = Html::openElement( 'div', array( 'class' => 'foo' )
. Html::rawElement( 'p', array(),
Html::element( 'span', array( 'id' =>
$somePotentiallyUnsafeId ),
$somePotentiallyUnsafeText
)
)
. Html::closeElement( 'div' );
IMO, cruft like this makes things harder to read and adds additional
performance overhead. It can be simplified to
$html = '<div class="foo'><p>'
. Html::rawElement( 'p', array(),
Html::element( 'span', array( 'id' =>
$somePotentiallyUnsafeId ),
$somePotentiallyUnsafeText
)
)
. '</p></div>';
What's your opinion, guys and gals?
With php 5.4+ array syntax the code will be even more compact
(comparable to raw html but structured easily manipulated data)
[ '@tag' => 'div', 'class' => 'foo', [
'@tag' => 'p', [ '@tag' =>
'span', 'id' => $id, $text ], '#comment' => $comment ] ];
Placing language operators into template itself like
{% for user in users %}
does not separate html data from code well enough. Template language always will be more
limited comparing to processing via PHP classes.
Dmitriy