Php 从子类初始化父类变量

Php 从子类初始化父类变量,php,Php,我有两个类:一个是包含常规数据库查询的DBobject,另一个是每个都有特定数据库查询的子类。现在的问题是,当我尝试初始化父类table_name变量时,它没有被初始化。我尝试了很多方法,但它表明在执行查询时表是空的。代码如下: <?php class DBobject { public static $table_name=""; public static function find_all(){ global $database; return self::find_

我有两个类:一个是包含常规数据库查询的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";
}
?>


?>

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


您可以使用get_called_class或static::而不是self::来引用调用的类,而不是代码所在的类。如果您使用的是PHP5.3或更高版本,则可以这样做,因为它们添加了“后期静态绑定”


您可以使用get_called_class或static::而不是self::来引用调用的类,而不是代码所在的类

No!请永远不要使用全局变量!除了极少数情况。不!请永远不要使用全局变量!除了极少数情况。这就是我在服务器中没有5.3的问题,我知道这将解决问题,主要问题是函数没有真正的问题唯一的问题是我如何根据子类要求初始化表名,或者如何初始化更具体的子表。你不能在v5.3之前使用静态函数。。。我遇到了同样的问题,最终只是升级到PHP5.3。。。。当然,你可以通过添加一些额外的函数来重写你的代码来绕过它,但是这样做会破坏扩展类的初衷——底线——你最终必须升级到5.3,为什么不节省时间,现在就开始呢?花时间重新编码或花时间升级?这就是我在服务器中没有5.3的问题,我知道这将解决问题,主要问题是函数没有真正的问题唯一的问题是我如何根据子类要求初始化表名,或者如何初始化更具体的子表。你不能在v5.3之前使用静态函数。。。我遇到了同样的问题,最终只是升级到PHP5.3。。。。当然,你可以通过添加一些额外的函数来重写你的代码来绕过它,但是这样做会破坏扩展类的初衷——底线——你最终必须升级到5.3,为什么不节省时间,现在就开始呢?花时间重新编码还是花时间升级?
<?php
$cata = Catagory::find_all();
     foreach($cata as $catag){
     echo "Catagory Name :" . $catag->name."<br/>";
} 


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