在PHP中,我注意到如果我们有如下代码:
<?php if ( function('parameter')):?>
<?php //do something here ?>
<?php endif; ?>
为什么我们不能写这样的代码:
<?php if ( function('parameter'))
//do something here
endif; ?>
我是PHP新手,非常感谢!!
答案 0 :(得分:0)
PHP代码必须在<?php ?>
内,HTML标记必须在外面。您还可以使用echo
打印出HTML标记。
这是一个例子(在我看来比例2更清洁)。 HTML标记位于PHP字符串中。然后,the_field()
(一个字符串)的返回值与.
:
<?php
the_post_thumbnail('square');
if(get_field('quote_url')) {
echo '<p class="btn"><a href="'.the_field('quote_url');.'">Request a Quote</a></p>';
}
if(get_field('rfq_pdf_url')) {
echo '<p class="btn"><a href="'.the_field('rfq_pdf_url');.'">Download PDF</a></p>';
}
?>
这是另一个有效的例子(2)。您可以使用?>
结束PHP部分并输出常规HTML标记,然后使用<?php
再次启动PHP部分:
<?php
the_post_thumbnail('square');
if(get_field('quote_url')) { ?>
<p class="btn"><a href="
<?php the_field('quote_url'); ?>
">Request a Quote</a></p>
<?php }
if(get_field('rfq_pdf_url')) { ?>
<p class="btn"><a href="
<?php the_field('rfq_pdf_url');?>
">Download PDF</a></p>
<?php }
?>
然而,从每行开始<?php
并以?>
再次结束它将是多余的。
答案 1 :(得分:0)
另一种可能性是:
// From reflection
var nameA = typeof(DtoDerived).GetMember(nameof(DtoDerived.Name)).Single();
// Same as
//var nameA = typeof(DtoDerived).GetProperty(nameof(DtoDerived.Name));
// From compile time expression
Expression<Func<DtoDerived, NameDtoType>> compileTimeExpr = _ => _.Name;
var nameB = ((MemberExpression)compileTimeExpr.Body).Member;
// From runtime expression
var runTimeExpr = Expression.PropertyOrField(Expression.Parameter(typeof(DtoDerived)), nameof(DtoDerived.Name));
var nameC = runTimeExpr.Member;
Assert.AreEqual(nameA, nameC); // Success
Assert.AreEqual(nameA, nameB); // Fail