我是PHP的新手,我正在尝试将命名空间学习到合理的水平。
我发现我可以通过执行以下操作来使用其他类中的函数:
use Sonic\queries\projects;
$test = new projects();
$project = $test->getSingleProject($projectid);
但是我也可以通过简单地执行以下操作来访问该功能:
$project = Sonic\queries\projects::getSingleProject($projectid);
哪种方法最好用,为什么?或者它们基本相同?我搜索了高低的答案,但没有成功。希望有人可以向我解释。
答案 0 :(得分:2)
他们不相同。使用::
表示法静态调用该方法,这意味着该方法无法访问任何类实例变量(如$this->projectname
)。如果该方法没有使用实例变量,那么很可能它应该被定义为静态方法。
class projects {
public static getSingleProject($projectid) {
// function body
}
}
答案 1 :(得分:2)
我肯定会建议你坚持第一种方式。静态函数和变量引入了一种全局状态。
您可以从这里的材料中受益:
答案 2 :(得分:1)
即使未声明projects::getSingleProject($projectid)
,调用static
仍然在php中有效。如果方法使用$this
,您将收到错误,但在您的情况下,看起来这就是正在发生的事情。它可能没有声明为静态,因此你不应该静态使用它。