【问题标题】:Why `require` and `use` can not be written in the function body?为什么`require`和`use`不能写在函数体中?
【发布时间】:2016-03-09 09:22:45
【问题描述】:

文件1:

<?php
    function done() {
        require_once '/home/vendor/autoload.php';
        use Qiniu\Auth;
        use Qiniu\Storage\UploadManager;
        #omitted
        }
?>

文件2

<?php
    require_once '/home/vendor/autoload.php';
    use Qiniu\Auth;
    use Qiniu\Storage\UploadManager;
    function done() {
        #omitted
        }
?>

为什么 file1 不能工作?
应该改写成file2,为什么函数体里可以写require和use?

【问题讨论】:

标签: php namespaces


【解决方案1】:

因为from php doc

当一个文件被包含时,它包含的代码继承了包含发生的行的变量范围。从那时起,调用文件中该行的任何可用变量都将在被调用文件中可用。但是,包含文件中定义的所有函数和类都具有全局范围。

对于use 关键字应用相同的规则

在您的情况下,在函数中声明 isìnside 限制了包含文件中声明的变量和代码的可见范围

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 2010-11-12
    • 2011-10-31
    • 2015-05-17
    • 2014-10-29
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多