决定开始在我的 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/