PHP代码包装

问题描述:

我刚开始学习PHP。我看了一篇关于使用PHP构建WordPress主题的教程。我想问一下术语“包装器”,因为我知道PHP代码的包装是<?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(); 
    ?> 

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

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

+0

两者都是正确的。第一个剪裁更多的是在wordpress中使用。 –

official documentation称他们开始和结束标记

当PHP解析一个文件时,会寻找开始和结束标记,标记 是<?php?>告诉PHP开始和停止解释它们之间的代码为 。此种方式的解析可以使PHP嵌入 各种不同的文档中,作为一对 开始和结束标记之外的一切都会被PHP解析器忽略。

“代码包装”通常被理解为一个类,或库,其encapsulates下一个简化的编程接口的数较低级别的操作。例如,decorator pattern也被称为包装,因为这个想法是创建一个类,将另一个类添加额外的功能,而不改变其他类的结构。

实施例包装(装饰)

<?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标记“PHP包装器”是非常正确的。但在PHP模型(一类或一组函数)的情况下,PHP标签(通常只有打开标签)是强制性的,我们主要关注的代码结构。

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

在你的例子中,它没有区别,但为了可读性,我只有一组<?php ?>标签。