我试图从另一个函数调用另一个函数。我收到一个错误:
Fatal error: Call to undefined function getInitialInformation()
in controller.php on line 24
控制器.php文件:
require_once("model/model.php");
function intake() {
$info = getInitialInformation($id); //line 24
}
型号/型号.php
function getInitialInformation($id) {
return $GLOBALS['em']->find('InitialInformation', $id);
}
已经尝试过的方法:
1.已验证require_once是否正常工作,以及文件是否存在于指定位置。
1.已验证文件中是否存在该函数。
我不明白。我是不是漏掉了什么?
8条答案
按热度按时间6jjcrrmo1#
如何重现错误以及如何修复错误:
1.将此代码放入名为
p.php
的文件中:1.按如下方式运行:
1.我们得到错误:
1.解决方案:使用
$this->salt();
代替salt();
所以你可以这样做:
如果有人能发布一个链接来解释为什么$this必须在类中的PHP函数之前使用,那就太好了。
oknwwptz2#
这是一个开发人员的错误-一个放错位置的结束括号,这使得上面的函数成为一个嵌套函数。
我在SO中看到了很多与未定义函数错误相关的问题。让我记下这个作为答案,以防其他人对函数作用域有同样的问题。
我首先尝试解决的问题:
1.已搜索包含函数定义的php文件。已验证该文件是否存在。
1.已验证页中是否存在上述文件的 require(或 include)语句。此外,已验证 require/include 中的绝对路径是否正确。
1.已验证require语句中的文件名拼写是否正确。
1.回显包含文件中的单词,以查看它是否已正确包含。
1.在文件末尾定义了一个单独的函数,并调用了它。它也工作了。
追踪大括号很困难,因为函数很长-遗留系统的问题。进一步的故障排除步骤如下:
1.我已经在包含文件的末尾定义了一个简单的打印函数。我把它移到了“未定义函数”的上方。这也使它成为未定义函数。
1.确定这是一些范围问题。
1.使用Netbeans的collapse(代码折叠)特性来检查这个函数上面的函数。因此,上面的1000行函数和这个函数沿着折叠,使它成为一个嵌套函数。
1.一旦发现问题,将函数剪切粘贴到文件末尾,解决了问题。
v6ylcynt3#
很多时候出现问题是因为
php
不支持php.ini
文件中的短开放标记,即:您必须用途:
soat7uwm4#
您的函数可能位于与调用它的名称空间不同的名称空间中。
http://php.net/manual/en/language.namespaces.basics.php
a64a0gku5#
我在一个虚拟服务器上发生了这个问题,当其他主机上一切正常工作.经过几次修改,我意识到我
include
或require_one
工作在所有调用,除了在一个文件.这个文件的问题是代码< ?php ? >
在文本的开头和结尾.这是一个脚本,只有< ?
,在那个版本的Apache中运行不了dzjeubhm6#
目前我正在处理定义了函数的Web服务,它抛出了一个未定义函数的错误。我刚刚在codeigniter的autoload.php中添加了这个错误
$autoload ['助手'] =数组('公用','安全','网址');
common是我的控制器的名称。
ckx4rj1h7#
请检查代码顶部是否有
<?PHP
。如果忘记,将出现此错误。i2loujxw8#
这显然不是这个问题的情况下,但由于我来到这里以下相同的错误消息,我想我会添加什么是错误的我的代码,也许它会帮助别人:
我把代码从JS移植到PHP,最后得到了一个带有一些公共方法的类。调用该类的代码(来自JS的代码)看起来像这样:
这是错误的,因为在PHP中它应该是这样的:
并且它还导致“PHP调用未定义的函数”。
改用
->
,问题解决。