【问题标题】:namespace classes, functions and how to use命名空间类、函数以及如何使用
【发布时间】:2016-05-20 19:16:25
【问题描述】:

决定开始在我的 PHP 项目中使用命名空间,并且正在努力让这个简单的设置工作......我做错了什么?

First.php

<?php

namespace MyNamespace;
use PDO;

class First {
    function hello() {
        return 'hello';
    }
}

Second.php

<?php
namespace MyNamespace;
use PDO;
use function \MyNamespace\First;

class Second {
    function world() {
        $firstpart = \MyNamespace\First::hello();
        return $firstpart . ' world';
    }
}

index.php

<?php
echo \MyNamespace\Second::world();
?>

这给了我一个错误:

严格标准:不应在第 2 行的 /var/www/testsite/index.php 中静态调用非静态方法 MyNamespace\Second::world()

基本上,我正在寻找一种方法来调用同一命名空间内不同类中的不同函数。在我之前和我的一生中从未使用过命名空间,但是我尝试调用我的函数,它们最终给了我同样的错误。请问有什么指点吗?

【问题讨论】:

    标签: php oop namespaces


    【解决方案1】:

    您的错误表明尝试调用静态方法,该方法不是(类 Second,方法 world - 非静态)

    并且导入函数空间名称必须如下:

    First.php

    <?php
    namespace MyNamespace;
    function hello() {
            return 'hello';
     }
    

    Second.php

    <?php
    namespace MyNamespace;
    use function \MyNamespace\First\hello;
    
    class Second {
        static function world() {
            $firstpart = hello();
            return $firstpart . ' world';
        }
    }
    

    并使用,例如:

     Second::world()
    

    (我在声明方法世界中添加了static字)

    Read this

    【讨论】:

      猜你喜欢
      • 2022-12-16
      • 2016-03-16
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多