PHP连接以回显三元组内的脚本

时间:2014-06-14 10:43:29

标签: php ternary

我刚开始使用三元运算符,因为我觉得它们确实使我的代码看起来更整洁 - 但是今天我遇到了一个问题。

如果某个请求变量设置为true(为了减少对不需要的文件的http请求),我试图将一些脚本标记回显到我的标题中,但是每当我尝试加载页面时,我都会收到错误:

require_once(./public/lib/functions.js'></script>): 

^在上一节中,为什么浏览器会解释html编码的字符,为什么我会丢失在我的require语句之前的<script>标记?

这是我正在使用的代码。

echo $ajax_required == true 
  ? "<script src='" . require_once(LIBRADIR . 'functions.js') . "'></script>" 
  : false;

提前致谢, 亚历克斯。

3 个答案:

答案 0 :(得分:2)

如果它只是一个.js文件而不是.php文件,那么您可能直接使用文件名作为字符串,而不是require()

echo html_entity_decode(($ajax_required == true)) 
  ? "<script src='" . LIBRADIR . "functions.js'></script>" 
  : false;

注意: require()用于在代码中包含.php脚本,主要是为了重用现有代码(函数,类等)。

答案 1 :(得分:2)

目前评估为:

require_once(('index.php'). "'></script>")

您只需要另一个括号来获得更高的优先级:

(require_once('index.php'))
^                         ^
echo html_entity_decode((true == true)) 
  ? "<script src='" . (require_once('index.php')) . "'></script>" 
  : false;

Example on the Doc

另外请记住require_oncerequire是您不需要将其称为函数参数的语言构造。你也可以这样写上面的语句:

(require_once 'index.php')

答案 2 :(得分:1)

肯定没有使用require_once,因为它用于PHP文件。我想你只想这样做:

echo $ajax_required? "<script src='" . LIBRADIR . "functions.js'></script>": "";

这将只打印来自三元运算符的输出,即脚本标记或空字符串。