决定在我的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();
?>
这给了我一个错误:
严格标准:非静态方法MyNamespace \ Second :: world()不应在第2行的/var/www/testsite/index.php中静态调用
基本上,我正在寻找一种方法来在同一名称空间内的不同类中调用不同的函数。从来没有使用名称空间之前和我的生活然而我试图调用我的功能,他们最终给了我相同的错误。有什么指针吗?
答案 0 :(得分:1)
您的错误表示尝试调用静态方法,而不是(类第二,方法世界 - 不是静态的)
导入函数空间名称必须如下:
<强> 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()
(我在声明方法世界中添加静态单词)