PHP函数作用域在函数中调用函数


PHP function scope calling a function within a function

我找不到任何关于我的问题,而搜索。也许我的搜索措辞不恰当。无论如何,我正试图从另一个函数内部从另一个文件调用一个函数,但它不工作。这似乎是一个范围问题。我有以下内容:

File1.php:

<?
function myCoolFunction()
{
    // Some really cool stuff in here
}

在File2.php中:

<?
require('File1.php');
// A bunch of stuff
function anotherCoolFunction()
{
    // Do some stuff
    myCoolFunction();
}

myCoolFunction不存在于anotherCoolFunction中。我可以在File2.php中调用它,但不能在另一个函数中调用。所以我的问题是,如何做到这一点?php中有超全局函数吗?

谢谢你的帮助!

对于初学者,使用function关键字定义函数

当你以你的方式需要一个文件时,你是在把它的内容放到你所在的文件的作用域中。(名称空间中的文件是另一回事。)

想想你的File2.php:

<?
require('File1.php');
// A bunch of stuff
function anotherCoolFunction()
{
    // Do some stuff
    myCoolFunction();
}

相同
<?
function myCoolFunction()
{
    // Some really cool stuff in here
}
// A bunch of stuff
function anotherCoolFunction()
{
    // Do some stuff
    myCoolFunction();
}

最后,(我这么说是因为我没有在你的代码中看到它)确保你调用了封装函数。例如

$var = anotherCoolFunction();

如果你正确定义了你的函数,它就会起作用

function myCoolFunction()
{
 echo 'hello';   // Some really cool stuff in here
}
function anotherCoolFunction()
{
    // Do some stuff
    myCoolFunction();
}
anotherCoolFunction();

下次尝试启用错误报告

 error_reporting(E_ALL);
 ini_set('display_errors', 1);

现在可以工作了,要点:不建议使用短标签。如果你找不到错误,不要用stackOverflow,用这个漂亮的ini_set()显示php.ini设置的错误是的. .在声明函数之前不能使用function关键字。

<?php
    function myCoolFunction()
    {
        // Some really cool stuff in here
    }

    <?php
    ini_set("display_error",1);
    require('File1.php');
    // A bunch of stuff
    function anotherCoolFunction()
    {
        // Do some stuff
        myCoolFunction();
    }