PHP调用未定义函数

wko9yo5t  于 2022-12-17  发布在  PHP
关注(0)|答案(8)|浏览(229)

我试图从另一个函数调用另一个函数。我收到一个错误:

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.已验证文件中是否存在该函数。
我不明白。我是不是漏掉了什么?

6jjcrrmo

6jjcrrmo1#

如何重现错误以及如何修复错误:

1.将此代码放入名为p.php的文件中:

<?php
class yoyo{
    function salt(){
    }
    function pepper(){
        salt();
    }
}
$y = new yoyo();
$y->pepper();
?>

1.按如下方式运行:

php p.php

1.我们得到错误:

PHP Fatal error:  Call to undefined function salt() in 
/home/el/foo/p.php on line 6

1.解决方案:使用$this->salt();代替salt();
所以你可以这样做:

<?php
class yoyo{
    function salt(){
    }
    function pepper(){
        $this->salt();
    }
}
$y = new yoyo();
$y->pepper();

?>

如果有人能发布一个链接来解释为什么$this必须在类中的PHP函数之前使用,那就太好了。

oknwwptz

oknwwptz2#

这是一个开发人员的错误-一个放错位置的结束括号,这使得上面的函数成为一个嵌套函数
我在SO中看到了很多与未定义函数错误相关的问题。让我记下这个作为答案,以防其他人对函数作用域有同样的问题。
我首先尝试解决的问题:
1.已搜索包含函数定义的php文件。已验证该文件是否存在。
1.已验证页中是否存在上述文件的 require(或 include)语句。此外,已验证 require/include 中的绝对路径是否正确。
1.已验证require语句中的文件名拼写是否正确。
1.回显包含文件中的单词,以查看它是否已正确包含。
1.在文件末尾定义了一个单独的函数,并调用了它。它也工作了。
追踪大括号很困难,因为函数很长-遗留系统的问题。进一步的故障排除步骤如下:
1.我已经在包含文件的末尾定义了一个简单的打印函数。我把它移到了“未定义函数”的上方。这也使它成为未定义函数。
1.确定这是一些范围问题。
1.使用Netbeans的collapse(代码折叠)特性来检查这个函数上面的函数。因此,上面的1000行函数和这个函数沿着折叠,使它成为一个嵌套函数。
1.一旦发现问题,将函数剪切粘贴到文件末尾,解决了问题。

v6ylcynt

v6ylcynt3#

很多时候出现问题是因为php不支持php.ini文件中的短开放标记,即:

<?
   phpinfo();
?>

您必须用途:

<?php
   phpinfo();
?>
soat7uwm

soat7uwm4#

您的函数可能位于与调用它的名称空间不同的名称空间中。
http://php.net/manual/en/language.namespaces.basics.php

a64a0gku

a64a0gku5#

我在一个虚拟服务器上发生了这个问题,当其他主机上一切正常工作.经过几次修改,我意识到我includerequire_one工作在所有调用,除了在一个文件.这个文件的问题是代码< ?php ? >在文本的开头和结尾.这是一个脚本,只有< ?,在那个版本的Apache中运行不了

dzjeubhm

dzjeubhm6#

目前我正在处理定义了函数的Web服务,它抛出了一个未定义函数的错误。我刚刚在codeigniter的autoload.php中添加了这个错误
$autoload ['助手'] =数组('公用','安全','网址');
common是我的控制器的名称。

ckx4rj1h

ckx4rj1h7#

请检查代码顶部是否有<?PHP。如果忘记,将出现此错误。

i2loujxw

i2loujxw8#

这显然不是这个问题的情况下,但由于我来到这里以下相同的错误消息,我想我会添加什么是错误的我的代码,也许它会帮助别人:
我把代码从JS移植到PHP,最后得到了一个带有一些公共方法的类。调用该类的代码(来自JS的代码)看起来像这样:

$myObject.method(...)

这是错误的,因为在PHP中它应该是这样的:

$myObject->method(...)

并且它还导致“PHP调用未定义的函数”。
改用->,问题解决。

相关问题