php - 命名空间类、函数和如何使用

标签 php oop namespaces

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

第一.php

<?php

namespace MyNamespace;
use PDO;

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

第二.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();
?>

这给了我一个错误:

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

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

最佳答案

您的错误表明尝试调用静态方法,这不是(类 第二个 ,方法 世界 - 不是静态的)

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

第一.php

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

第二.php
<?php
namespace MyNamespace;
use function \MyNamespace\First\hello;

class Second {
    static function world() {
        $firstpart = hello();
        return $firstpart . ' world';
    }
}

并使用,例如:
 Second::world()

(我在声明方法世界里加了静态字)

Read this

关于php - 命名空间类、函数和如何使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354293/

相关文章:

php - 在另一个类方法中创建类对象给出 fatal error

php - 一个 SQL 中的多个变量就像

php - Eloquent orderBy 除了一行

面向对象设计 : Abstract class design vs Regular Inheritance

php - 如何从继承的方法中获取派生类的路径?

c++ - 帮助解决这个问题(指针和多态性)

python - Boost Python - 全局和本地字典

php - Laravel DomPDF Google 字体未加载

php - 如何仅在服务器调用 PHP 脚本时运行它

找不到php命名空间类 - Twig Composer