2012-05-11 7 views
0

私はOOPを初めて使っています。私は下の例を見ました。 getStudentName()が静的​​メソッドとして設定されています。私が持っているOOP知識に基づいて、このメソッドは非静的メソッドでなければなりません。非静的メソッドがコードに悪影響を及ぼすことなく静的である場合、

ただし、コードは間違っていても機能します。非静的メソッドがコードに悪影響を及ぼすことなく静的であるかどうかを知りたいですか?

ところで、コードはPHPによって書かれています。

class student{ 

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

    } 

} 

$stuName = student::getStudentName($stuID) 
+1

getStudentName()メソッドは何をしますか?静的メソッドと非静的メソッドの違いは、インスタンス変数で動作するかどうかです。利用可能なインスタンスがないため、静的メソッドはインスタンス変数で直接動作することはできません。 – Brady

+0

なぜメソッドが非静的であるべきだと思いますか? – deceze

+0

@deceze、それぞれの生徒はその名前を持っているので、getStudentName()はクラスのメソッドではなく、各$ studentObjに対応する必要があります。 – Acubi

答えて

1

AFAIK PHPでは、静的メソッドを通常のメソッドとして呼び出すことができます。

student::getStudentName()

$someStudent->getStudentName()

しかし、あなたは$これを持っていないでしょう。

この具体的な方法を静的にすることは、機能性に依存することをお勧めします。

学生オブジェクトの名前を取得する必要がある場合は、それを正常にします。

すべてのstudentobjectsでIDを検索し、そのオブジェクトの名前を取得する必要がある場合は静的にします。

0

に依存します。

あなたのクラス「学生」は学生でなければなりません。 studentIdは属性であり、データベースに格納されます。 retrive queの学生、または学生の名前は、データベースから別のものです。

あなたはActiveRecordのパターンを使用する場合は、[OK]を、自分のクラスはそのようなことを知っているが、この

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

をはるかに関連したんですが、一部のケースでは、あなたがいる場合のみ、この

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

を行うことができますリソースは構築するのに非常に高価です。

0

PHPでは、 "static"キーワードを無視または推測し、E_STRICTエラー(デフォルトのerror_reportingマスクの下に隠れている)だけを投げることができます。

関連する問題