如何检查methods参数是否为stdClass对象

时间:2012-10-04 09:26:53

标签: php

我正在传递已被分配$row的{​​{1}}我将它传递给另一个类我想检查它是否是方法中的stdClass对象,例如,如果我想检查如果它是一个数组我会做

$statement->fetchAll();

我该如何检查它是否是stdClass对象?

最后是这种称为类型提示?

3 个答案:

答案 0 :(得分:7)

这是一个小脚本,可以帮助您检查变量是否是对象,或者是否是特定类型的对象,如果不想将参数函数转换为所需类型的对象。

<?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);

答案 1 :(得分:3)

好的解决方案看起来很简单。

public function hello(stdClass $row)

我用php版本5.3检查了它的工作原理。就像传递stdclass对象一样,但所有其他类型都会产生可缓存的致命错误。

答案 2 :(得分:1)

每当您想要明确说明函数接收哪种对象作为参数时:

如果你期待一个Person对象:

public function talkTo(Person $person){

}

如果你期待一个stdClass对象:

public function printOut(stdClass $row){

}

需要数据库对象吗?

public function save(Database $db){

}