如果非静态方法可以是静态的而对代码没有任何不良影响?

时间:2012-05-11 11:21:06

标签: php oop

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

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

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

class student{

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

    }

}

$stuName = student::getStudentName($stuID)

3 个答案:

答案 0 :(得分:1)

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

$someStudent->getStudentName()

student::getStudentName()

但你不会有这个$。

如果使这个具体方法静态取决于它的功能性是个好主意。

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

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

答案 1 :(得分:0)

取决于

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

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

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

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

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

如果资源构建起来非常昂贵。

答案 2 :(得分:0)

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