0

我是 OOP 的新手。我在下面看到了一个例子。已getStudentName()设置为静态方法。根据我所掌握的 OOP 知识,这个方法应该是一个非静态方法。

但是,即使代码错误,代码仍然有效。我想知道非静态方法是否可以是静态的而不会对代码产生任何不良影响?

顺便说一句,代码是用 PHP 编写的。

class student{

    public static function getStudentName($studentID){
             ....
             return $studentName;

    }

}

$stuName = student::getStudentName($stuID)
4

3 回答 3

1

AFAIK,您可以在 PHP 中将静态方法称为普通方法。

$someStudent->getStudentName()

student::getStudentName()

但是你不会有 $this。

将这个具体方法设为静态是否是一个好主意取决于它的功能。

如果它应该为您提供学生对象的名称,请使其正常。

如果它应该在所有学生对象中搜索一个 ID 并检索该对象的名称,请将其设为静态。

于 2012-05-11T11:27:48.600 回答
0

PHP 允许您忽略或推断“静态”关键字,并且只抛出 E_STRICT 错误(隐藏在默认的 error_reporting 掩码下)。

于 2012-05-11T11:38:19.147 回答
0

要看。

您的班级“学生”必须是学生。studentId 是一个属性,它存储在数据库中。从数据库中检索 que student 或学生姓名是另一回事。

如果您使用 ActiveRecord 模式,好的,自己的类知道这样的事情,但这样做更相关

$instance = student::find($id);
$name = $instance->name();

但在某些情况下,您只能这样做

$name = student::find_and_return_the_name($id);

如果资源的建造成本很高。

于 2012-05-11T11:29:06.040 回答