8

$row割り当てられたものを別のクラスに渡し$statement->fetchAll();、それがメソッド内のstdClassオブジェクトであるかどうかを確認したい。たとえば、配列であるかどうかを確認したい場合は、

public function hello(array $row)

それがstdClassオブジェクトであるかどうかを確認するにはどうすればよいですか?

最後に、これは型ヒントと呼ばれますか?

4

3 に答える 3

20

パラメータ関数を目的のタイプのオブジェクトにキャストしたくない場合は、変数がオブジェクトであるかどうか、または特定のタイプのオブジェクトであるかどうかを確認するのに役立つ小さなスクリプトを次に示します。

<?php
function text($a){

   if(is_object($a)){
       echo 'is object';
   }else{
       echo 'is not object';
   }

   //or if you want to be more accurate 
   if($a instanceof stdClass){
       echo 'is object type stdClass';
   }else{
       echo 'is not object of type stdClass';
   }

}

$b = new stdClass();
text($b);
于 2012-10-04T09:54:40.027 に答える
2

よく解決策は簡単なもののように見えます。

public function hello(stdClass $row)

私はそれが動作するphpバージョン5.3で確認しました。stdclassオブジェクトを渡すのと同じように機能しますが、他のすべてのタイプではキャッシュ可能な致命的なエラーが発生しました。

于 2012-10-04T09:33:31.627 に答える
0

関数がパラメータとして受け取るオブジェクトの種類を明示的に指定したい場合は、次のようにします。

Personオブジェクトを期待している場合:

public function talkTo(Person $person){

}

stdClassオブジェクトを期待している場合:

public function printOut(stdClass $row){

}

データベースオブジェクトが必要ですか?

public function save(Database $db){

}
于 2012-10-04T09:38:32.710 に答える