PHP名称空间-实例化新对象或直接调用函数?
我对PHP非常陌生,我正在尝试将名称空间学习到一个合理的水平 我发现我可以通过执行以下操作来使用另一个类中的函数:PHP名称空间-实例化新对象或直接调用函数?,php,Php,我对PHP非常陌生,我正在尝试将名称空间学习到一个合理的水平 我发现我可以通过执行以下操作来使用另一个类中的函数: 使用Sonic\querys\projects; $test=新项目(); $project=$test->getSingleProject($projectd); 但是,我也可以通过简单地执行以下操作来访问该功能: $project=Sonic\querys\projects::getSingleProject($projectd); 使用哪种方法最好?为什么?或者它们本质上
使用Sonic\querys\projects;
$test=新项目();
$project=$test->getSingleProject($projectd);
但是,我也可以通过简单地执行以下操作来访问该功能:
$project=Sonic\querys\projects::getSingleProject($projectd);
使用哪种方法最好?为什么?或者它们本质上是一样的?我到处寻找答案,但没有成功。希望有人能给我解释一下。他们不一样。使用::
符号静态调用该方法,这意味着该方法无法访问任何类实例变量(如$this->projectname
)。如果该方法没有使用实例变量,那么很可能应该首先将其定义为静态方法
class projects {
public static getSingleProject($projectid) {
// function body
}
}
它们不一样。使用::
符号静态调用该方法,这意味着该方法无法访问任何类实例变量(如$this->projectname
)。如果该方法没有使用实例变量,那么很可能应该首先将其定义为静态方法
class projects {
public static getSingleProject($projectid) {
// function body
}
}
调用
projects::getSingleProject($projectid)
即使未声明static
在php中仍然有效。如果该方法使用$this
,您将得到一个错误,但在您的情况下,看起来就是这样。它可能不是声明为静态的,因此不应该静态地使用它。调用projects::getSingleProject($projectd)
即使它没有声明为static
在php中仍然有效。如果该方法使用$this
,您将得到一个错误,但在您的情况下,看起来就是这样。它可能不是声明为静态的,因此您不应该静态地使用它。我当然建议您坚持第一种方法。静态函数和变量引入了一种全局状态
您可能会从以下资料中受益:
- 我当然会建议您坚持第一条道路。静态函数和变量引入了一种全局状态
您可能会从以下资料中受益: