dop20345 2017-01-04 10:40
浏览 167
已采纳

致命的php错误:`使用include_once时不能重新声明函数`[复制]

This question already has an answer here:

I have a helper function helper.php with contents:

<?php
session_start();

function get_result($dbh, $sql) {
    //return mssql_query($sql);
    return $dbh->query($sql);
}
?>

which is included in two files (information.php and commercial.php) using:

include_once 'helper.php'

Unfortunately this generates the slightly confusing error message:

PHP Fatal error:  Cannot redeclare get_result() (previously declared in helper.php:4) in helper.php on line 4

I understand that i cannot redeclare functions, hence why i use the include_once construct, but nevertheless it tries to redeclare the function anyway. Why?

If it helps; I am using Mustache PHP, and all three files are located in the partials folder.

</div>
  • 写回答

2条回答 默认 最新

  • duangu1868 2017-01-04 10:42
    关注

    include_once ensures that file is included exactly once. It doesn't check the contents of the file or the functions in it. So when two file with same function name is added, its quite natural for the error to arise!

    From the manual:

    include_once may be used in cases where the same file might be included and evaluated more than once during a particular execution of a script, so in this case it may help avoid problems such as function redefinitions, variable value reassignments, etc.

    italicized means that the function in the same file, not in different files.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀