我正在尝试编写一个简单的数据库包装类。我写了一个方法,如下所示:
public function get_objects($sql, $class_name = null) {
$result = mysql_query( $sql, $this->connection );
$objs = array();
if( $result ) {
while ($obj = mysql_fetch_object($result, $class_name)) {
$objs[] = $obj;
}
mysql_free_result($result);
}
return $objs;
}如果在调用此方法时未指定$class_name,则对mysql_fetch_object的调用将失败,并显示以下错误:
PHP Fatal error: Class '' not found in ...问题是我不想让它使用class_name。我只想让它执行默认行为,就像我没有指定class_name一样。
为什么这是失败的?
发布于 2011-07-26 11:35:59
缺省值不是null。默认值为stdClass (来自文档):
要实例化的类的名称,设置的属性并返回。如果未指定,则返回stdClass对象。
如果你想保持相同的默认值,你需要将这个作为你的方法签名:
public function get_objects($sql, $class_name = "stdClass") {
// continue as normal.发布于 2011-07-26 11:30:46
如果不想指定特定的类,那么为什么还要使用class_name参数呢?
如果你一定要使用它,这应该是可行的
if ( $result ) {
$class_name = $class_name ? $class_name : 'stdClass';
...发布于 2011-07-26 11:33:05
也许是因为它需要一个字符串,而你给了它null。我会做一个if检查,看看$class_name!=null。
public function get_objects($sql, $class_name = null) {
$result = mysql_query( $sql, $this->connection );
$objs = array();
if( $result ) {
if ($class_name){
while ($obj = mysql_fetch_object($result, $class_name)) {
$objs[] = $obj;
}
}else{
while ($obj = mysql_fetch_object($result)) {
$objs[] = $obj;
}
}
mysql_free_result($result);
}
return $objs;
}https://stackoverflow.com/questions/6824920
复制相似问题