require/include 的反向函数

问题描述 投票:0回答:4

是否有任何函数可以恢复 require/require_once/include/include_once?

例如在脚本A中,我需要一个脚本B,它与其他脚本C具有共同的功能,并且我不知道以前是否需要C。所以我想在加载 B 之前从内存中“清理”脚本 C,以防止重复的函数。

php
4个回答
4
投票

你不能——也不应该那样做。相反,使用

require_once
- 这样的操作是安全的。请注意,包含后您的上下文将被更改 - 因此无法应用“反转”它。

如果您想覆盖某些功能 - 您始终可以这样做,它会正常工作。在声明之前您应该检查一下:


3
投票

据我所知。

老实说,我的建议(假设您正在“清理”一些代码)是将脚本 B 和脚本 C 的通用功能抽象到另一个脚本 D 中,并在脚本 B 和 C 中使用 require_once/include_once 。


2
投票

事情不是这样的。但是,您可以使用以下方法防止函数库出现函数命名冲突:

if (!function_exists('myfunction')) {
    function myfunction($param) {
        // ...
    }
}

也就是说,如果你还没有在任何地方使用 require_once / include_once (你应该)。


2
投票

您可以为文件命名空间以防止冲突:

<?php

namespace Foo {
    function test() {
        return __NAMESPACE__ . '::' . __FUNCTION__;
    }
}

namespace Bar {
    function test() {
        return __NAMESPACE__ . '::' . __FUNCTION__;
    }
}

namespace Baz {
  var_dump(array(
      \Foo\test(),
      \Bar\test(),    
  ));
}

https://eval.in/82425

© www.soinside.com 2019 - 2024. All rights reserved.