Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在包含的文件中使用PHP名称空间_Php_Namespaces - Fatal编程技术网

在包含的文件中使用PHP名称空间

在包含的文件中使用PHP名称空间,php,namespaces,Php,Namespaces,我尝试对包含的文件使用名称空间: <?php namespace MyNamespace; function foo() { echo 'Test'; } include( 'otherfile.php' ); ?> php的内部是一个,我也希望看到“Test”作为它的输出 在不修改另一个文件的情况下,有没有可能意识到这一点 我的愿望是:我想替换外部库代码中的现有文件。我不想修改该代码,因为我希望在那里得到进一步的更新。不,这是不可能的。您正在定义函

我尝试对包含的文件使用名称空间:

<?php
  namespace MyNamespace;

  function foo() {
    echo 'Test';
  }

  include( 'otherfile.php' );
?>

php的内部是一个
,我也希望看到“Test”作为它的输出

在不修改另一个文件的情况下,有没有可能意识到这一点


我的愿望是:我想替换外部库代码中的现有文件。我不想修改该代码,因为我希望在那里得到进一步的更新。

不,这是不可能的。您正在定义函数
MyNamespace\foo
。包含的文件正在调用函数
foo
。如果不更改文件中的代码,就无法更改
foo()
所指内容的含义。如果要替换函数
foo
,唯一真正的希望是定义自己的
函数foo
(无名称空间)并避免加载该函数的其他实现。如果不是这样的话,它就是这样的东西,你真的不想求助于它。

为什么不使用composer及其自动加载功能?自动加载是指在调用函数时定义函数,而之前不定义它。但我要替换的函数将被定义。(谢谢你教我自动加载功能,我以前不知道。)如果不修改代码,我无法避免加载其他函数的实现。如果我把我自己的函数放在
include
的前面,我会得到一个致命的错误。据我所知,我不能抓住致命的错误。外部库有500多个文件。。。所以现在是修改其中代码的方法。是的,你现在有点麻烦了…