2

我有 2 个类:一个是包含一般数据库查询的 DBobject,另一个是每个子类都有特定的数据库查询。现在的问题是当我尝试初始化父类 table_name 变量时,它没有被初始化。我尝试了很多方法,但它显示执行查询时表为空。这是代码:

<?php
class DBobject {

 public static $table_name="";

 public static function find_all(){
  global $database;
  return self::find_by_sql("SELECT * FROM ".self::$table_name);
 }

 }
?>


<?php
class Catagory extends DBobject{
 public static $table_name ="catagory";
}
?>


?>

主要应用:

<?php
$cata = Catagory::find_all();
     foreach($cata as $catag){
     echo "Catagory Name :" . $catag->name."<br/>";
} 


 ?>

我希望能够初始化 DBobject 函数 find_all() 将处理的表的类型。请帮我解决一下这个。这是我得到的错误。请注意,查询不包含表的名称。

 Database query Failed You have an error in your SQL syntax; check the manual that corresponds to  your MySQL server version for the right syntax to use near '' at line 1

last SQL query: SELECT * FROM 
4

1 回答 1

0

如果您使用的是 php 5.3 或更高版本,则可以这样做,因为他们添加了“后期静态绑定”

http://php.net/manual/en/language.oop5.late-static-bindings.php

您可以使用 get_call_class() 或 static:: (而不是 self::) 来引用被调用的类而不是代码所在的类

于 2012-09-03T20:48:37.410 回答