1

可能重复:
PHP 开放标签“<?=”和“<?php”/“<?”有什么区别?

而不是输入:

<?php echo $foo; ?>

我看过写的

<?= $foo; ?>

但我经常想知道这样做有什么风险/不切实际?只是好奇。谢谢!


在您拥有的地方添加另一个变量var _dialog,将其命名为var _callback. 然后在你的Choose函数中,添加一个参数来获取回调函数并存储它,比如:

Choose: function Choose(f) {
    _callback = f;
    ...
}

然后当你准备好调用回调函数时(我假设这是在 onButtonOK/onButtonCancel 中),调用回调函数使用_callback(parameter);

4

5 回答 5

2

如果您碰巧将代码移动到short_open_tag未启用的环境中,您将暴露大量内部变量名称(安全问题)并有大量损坏的输出。

另一个缺点是允许使用的相同设置<?=与允许您使用 just 打开 PHP 标记的设置相同<?,因此禁用它不仅会暴露您尝试显示的那些特定变量,还会在短标记中显示任何 PHP 代码.

于 2011-10-26T16:34:54.090 回答
2

第二个选项增加了可读性。第一个确保可移植到其他系统。

除此之外,并没有什么区别……

于 2011-10-26T16:36:07.403 回答
1

它不是便携式的。有一个 5.4 之前的配置设置可以将其关闭,因此如果您将脚本移动到禁用它的站点,它会中断

此外,我认为它不太明确。<?= func() ?>和之间的区别<? func(); ?>很容易忽略,但很重要

于 2011-10-26T16:34:37.140 回答
0

只有在运行 PHP 时启用短标签时,才能使用<?和。<?=不使用它的实际原因是因为它与 xml 声明不兼容。如果您尝试输出带有 php 扩展名的 xml 并且启用了短标签,则必须执行类似<<??>?.. 的操作。我想您可以只回显一个字符串。

于 2011-10-26T16:38:13.873 回答
-1

我不明白所有关于便携性的说法。

总是存在可移植性问题。
不可能有 apache - 所以,不要使用 mod_rewrite。
不可能有 PDO - 所以,不要使用准备好的语句。
不可能有 mysql - 所以,不要使用复杂的查询。
不可能有 PHP - 所以,纯 HTML 是最兼容的格式,因为可移植性问题,永远不要使用其他任何东西!

于 2011-10-26T16:41:59.120 回答