PHP语法简化

时间:2017-02-02 20:55:18

标签: php

在PHP中,我注意到如果我们有如下代码:

<?php if ( function('parameter')):?>
                  <?php //do something here ?>  
               <?php endif; ?>  

为什么我们不能写这样的代码:

<?php    if ( function('parameter'))
               //do something here  
               endif; ?>

我是PHP新手,非常感谢!!

2 个答案:

答案 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