繁体   English   中英

奇怪的PHP标签

[英]Strange PHP tags

我从一个教程中获得了以下代码,该教程教导了如何制作wordpress插件。 它具有一些不寻常的PHP标记。 例如,

a)从底部的第3行开始,有一个<?php标签。

b)而且,在设置了$ base_map_url后,还有一个结束符?>标记。

这与我所学的知识有很大不同,但是代码仍然有效。

c)此外,在作者构建的所有插件中,最顶部都有一个<?php标记,但最后没有一个标记。

这里发生了什么,您能解释一下吗?

<?php
/*
 Plugin Name: Map plugin using shortcode
 Plugin URI: http://example
 Description: This plugin will get a map of whatever parameter is passed
 Author: Drew
 Version: 1.0
 Author URI: http://www.blah 
 */

function smp_map_it($addr)
{
    $addr = "1600 Pennsylvania Ave. Washington, D.C.";
    $base_map_url = 'http://maps.google.com/maps/api/staticmap?sensor=false&size=256x256&format=png&center=';
    ?>
    <h2>Your map:</h2>
    <img width="256" height="256"
        src="<?php echo $base_map_url . urlencode($addr); ?>" />
    <?php 
}

add_shortcode('map-it','smp_map_it');

它只是为HTML输出留下一个PHP块。

函数实际上不应该那样做。 这就是为什么WordPress这么多废话的原因 ,例如the_content()只是转储内容(好像人们太无能以致无法使用echo )。

最好的方法是简单地使用一个视图文件来处理您的HTML以及一些基本的PHP构造和控制结构,例如echoforeachif等。

文件中的末尾?>是不必要的, Zend编码标准要求您永远不要将其放置 当某些讨厌的空格结束之后,通常可能是导致标头已经发送的原因。

当您关闭PHP标记时,它等于:

echo ('<h2>Your map:</h2>
<img width="256" height="256"
    src="');

有两种方法来编码PHP。 一个将PHP插入HTML,供前端开发人员使用。 模板语言通常使用以下样式:

<img src="<?php echo ($url); ?>">

另一种样式更像是编程,然后是模板编写:

<?php
    echo (printf ('<img src="%s">', $url));

<?php标志着php解析器的php代码的开始

?>标志着php解析器的php代码结束

/*标记注释的开始,解析器将忽略该注释

*/标记注释的结尾,解析器将忽略该注释

这并不奇怪,这是胡扯。 他正在将HTML嵌入PHP(无论如何都是罪恶的),而且做得不好。 最后一个PHP标签可以保持打开状态。

此函数直接发送输出,而不是使用内容不在php标签之外的echo语句。

尽管通常不鼓励使用这种方法(在函数体中退出PHP上下文并不被认为是一种好习惯),但没有任何使它不起作用的东西。

但是,这是非常糟糕的代码。 在尝试执行重定向或会话管理时,函数主体中的输出通常会导致标头错误和其他问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM