PHP代码包装器

时间:2016-11-14 04:13:56

标签: php wordpress

我刚开始学习PHP。我看了一个关于使用PHP在WordPress中构建主题的教程。我想询问术语“包装器”,因为我知道PHP代码的包装器是<?php ?>。首先请看这段代码:

<?php
        $lastBlog = new WP_Query('type=post&posts_per_page=1');

        if( $lastBlog->have_posts() ):

        while( $lastBlog->have_posts() ): $lastBlog->the_post(); ?>

            <?php get_template_part('content', get_post_format()); ?>


        <?php endwhile;

    endif;
        wp_reset_postdata();
    ?>

和这个

<?php 
        $lastBlog = new WP_Query('type=post&posts_per_page=1');

        if( $lastBlog->have_posts() ):

        while( $lastBlog->have_posts() ): $lastBlog->the_post(); 

            get_template_part('content', get_post_format()); 


        endwhile;

    endif;
        wp_reset_postdata();
    ?>

包装使用方式略有不同。我很困惑,哪个更好?两者都以相同的方式运行。对不起,如果这个问题看起来很荒谬。

我搜索过这个主题,但我没有回答我的问题。说“包装”而不是“限制器”是否正确?

2 个答案:

答案 0 :(得分:1)

official documentation将其称为打开和关闭代码

  

当PHP解析文件时,它会查找开始和结束标记   是<?php?>告诉PHP开始和停止解释   他们之间的代码。以这种方式解析允许嵌入PHP   各种不同的文件,作为一对之外的一切   PHP解析器忽略了打开和关闭标记。

&#34;代码包装器&#34; 通常被理解为一个类或库,encapsulates简化编程接口下的许多低级操作。例如,decorator pattern也称为 wrapper ,因为我们的想法是创建一个类,它将额外的功能添加到另一个类而不改变其他类的结构。

示例包装器(装饰器)

<?php
class Rectangle {
  private $width, $height;

  public function __construct($w, $h) {
    $this->width = $w;
    $this->height = $h;
  }

  public function getArea() { return $this->width * $this->height; }
  public function getWidth() { return $this->width; }
  public function getHeight() { return $this->height; }
}

// Decorator
class ImprovedRectangle {
  protected $rect;

  public function __construct(Rectangle $r) {
    $this->rect = $r;
  }

  public function getPerimeter() {
    return 2 * ($this->rect->getWidth() + $this->rect->getHeight());
  }
}

$rect = new Rectangle(2, 3);
$irect = new ImprovedRectangle($rect);
echo $irect->getPerimeter(); // 10

所以这取决于背景。如果我们谈论的是模板代码,标记代码是主要代码,那么调用PHP标记&#34; PHP包装器是非常正确的。但是在PHP模型(一个类或一组函数)的上下文中,PHP标记(通常只是开始标记)是必需的,我们主要关注代码结构。

答案 1 :(得分:0)

开始标记<?php内的所有内容和结束标记?>都将由PHP处理器处理。我听说这些叫做 PHP群岛。因为在带有更多开始和结束标记的示例中,<?php ?> islands 之外没有代码,代码运行相同。如果您将代码放在 islands 之外,它将以纯文本形式打印,而不会发送到PHP进程。

在您的示例中,它没有什么区别,但为了便于阅读,我只有一组<?php ?>标记。