php调用包含内部函数以供外部函数使用

php调用包含内部函数以供外部函数使用,php,php-include,Php,Php Include,我想在函数中包含一个带有php的文件,但要在函数之外使用它 function add( $F ){ $i = 3; while( $i > 0 ){ $i--; try{ if( ( include $GLOBALS['_SERVER']['DOCUMENT_ROOT'] . $F ) == 2 ){ break; } else{

我想
在函数中包含一个带有php的文件,但要在函数之外使用它

function add( $F ){
    $i = 3;
    while( $i > 0 ){
        $i--;
        try{
            if( ( include $GLOBALS['_SERVER']['DOCUMENT_ROOT'] . $F ) == 2 ){
                break;
            }
            else{
                sleep( 1 );
            }
        }
        catch( Exception $e ){ }
    }
    die();
}
由于
auto\u prepend\u文件
,此功能会自动包含在内

index.php

add( '/cat.php' );
echo 'my' . $cat;
/cat.php

$cat = 'cat';
echo '...';
return 2;       //rather not exist but doesnt seem like there's a choice
加载index.php时:结果是
my…
而不是
my…cat

include
返回1,即使文件是否包含在内。好的,如果Notepad++50%完成了一个文件的上传,而这个文件同时是
include
d,那么它将返回1,看起来它只包含一个空文件。这就是为什么
==2
存在于
add
函数中

function add( $F ){
    $i = 3;
    while( $i > 0 ){
        $i--;
        try{
            if( ( include $GLOBALS['_SERVER']['DOCUMENT_ROOT'] . $F ) == 2 ){
                break;
            }
            else{
                sleep( 1 );
            }
        }
        catch( Exception $e ){ }
    }
    die();
}
如果我想包含一些东西,我不希望得到这样的答案,比如
你很幸运
或者
不,下次运气更好
或者
保存时间太长,什么都不享受
,或者到处都是一堆代码


那么这可能吗?还是有更好的选择?我可以使用
包含
(讽刺)吗?我知道有人提出过类似的问题,但这些答案主要是用户正在做什么或“为什么”相关问题的替代方案

包含文件时,它包含的代码将继承包含文件所在行的变量范围。从该点开始,调用文件中该行可用的任何变量都将在被调用文件中可用。但是,包含文件中定义的所有函数和类都具有全局作用域。“tldr:您可以包含一个包含函数和类的文件,但如果您只是执行类似于
$cat='cat'的操作
则该变量仅在该函数的范围内。毫无疑问,有更明智的方法来解决您试图解决的任何问题,这实际上看起来像是一个即将发生的事故。XY问题:@fvu I有无数日志错误,表示当函数被
要求时它不存在。此功能用于确保
包含
实际包含。