为这两个PHP类制作接口?

为这两个PHP类制作接口?,php,class,interface,Php,Class,Interface,好的,我需要一点帮助。我有这两个PHP类 class menu { public static function GetItems () { $res=array(); $r=mysql_query("select * from menuitems"); while($rw=mysql_fetch_row($r)) $res[]=new MenuItem($rw[0],$rw[1],$rw[2],$rw[3]);

好的,我需要一点帮助。我有这两个PHP类

class menu
{
    public static function GetItems ()
    {
        $res=array();
        $r=mysql_query("select * from menuitems");
        while($rw=mysql_fetch_row($r))
        $res[]=new MenuItem($rw[0],$rw[1],$rw[2],$rw[3]);
        return $res;
    }
}
第二

class Articles
{
    public static function Get ()
    {
        $res=array();
        $r=mysql_query("select * from articles");
        while($rw=mysql_fetch_row($r))
            $res[]=new Articles($rw[0],$rw[1],$rw[2],$rw[3]);
        return $res;
    }
}
我需要一个简单的PHP接口类,可以在里面编写所有这些,只是为了更改菜单项和文章。基本上我需要这样的界面

interface Base
{
    $res=array();
    $r=mysql_query("select * from $base");
    while($rw=mysql_fetch_row($r))
        $res[]=new $base($rw[0],$rw[1],$rw[2],$rw[3]);
    return $res;
}
}
在另一节课上,我需要一些我可以这样称呼的东西

 class menu
 {
    public static function GetItems ()
    {
        $baza="Articles";
    }
}
你知道我的意思,我的类
菜单
需要实现类
baza
,还有
$baza
,用这个字符串替换吗


好的,我同意,很多人在接口中都不能这样做,但我需要解决我的问题?

你在寻找继承,而不是“接口”。接口说实现它的对象将有某些方法,但必须为它们提供主体。在您的例子中,最好使用一个抽象类,它有一个具体的方法,我们可以说,
Get()
,然后是一个抽象方法
GetTable()

然后你可以用你的类来扩展它。例如:

class menu extends DatabaseObject
{
    protected function GetTable ()
    {
        return 'menuitems';
    }
}
现在,您可以在该对象上使用
Get()
,从表中取出项目


这样做的缺点是无法使用静态方法——必须创建类的实例。

可以使用公共基类:

class Base {
   static $table=null;

   public static function GetItems ()
   {
      $table = static::$table;
      //...
   }
}

class Menu extends Base {
   static $table="menu";
   //...
}

你的代码毫无意义。没有。接口只是功能原型的集合。您不能在其中放入任何编程逻辑。最后的menu::GetItems()什么都不做。可以使用公共基类和静态成员变量(如果您使用的是旧php,还可以使用一些技巧)来实现这一点。您的意思是“如何调用$avariable::get()?”?或者您只是对继承感到困惑?您不能在接口中定义函数。这是一些酸性代码。类全部从基中获取,并放入对象中。也许我不需要接口,但我需要解决方案,可能需要使用abscract类。它有一个函数,然后在另一个类中调用abscract类函数来定义$base.Txanks,这就是我所需要的,因为现在我有了完整的dinamic,我将有很多类,它们将从base中的不同表中收集。这就是为什么我问这个接口,也许它可以做的接口,将与基地?你的意思不是
类菜单扩展数据库对象
?@d_不可避免的Oops!谢谢你的接球!
class Base {
   static $table=null;

   public static function GetItems ()
   {
      $table = static::$table;
      //...
   }
}

class Menu extends Base {
   static $table="menu";
   //...
}