都说PHP类的扩展性很好,也很强大,我学了一段时间了,但还不是很理解,举个例子,
比如一个mysql类
class mysql
{
 .....连接数据库,操作数据库的类...
  public function query($sql)
{
   mysql_query($sql);
}
}
class changepwd extends mysql
{
...继承mysql类,定义一个修改密码的类.....
     public function setpwd($pwd)
    {
      .....
    }
}
比如要操作一个SQL数据库那么我们就实例化一个$db
$sql="select * from table";
$db=new mysql();
$db->query($sql);但我如果要修改密码,那我是不是要实例化一个$pwd
$pwd=new changepwd ();
$pwd->setpwd($pwd);我的changepwd 类继承了mysql类
用到那块了,就把那个类给实例化了,直接使用,如果有再多的类,就继承mysql,然后实例化---使用,对吗?

解决方案 »

  1.   

    不是这样子吧。继承应该是:如果B是A的一种,那么B应该继承自A。如果只是说B要使用A的功能,那A作为B的成员更合适。明显的你这个changepwd类不是mysql的一种,所以实例化mysql类成为全局变量$db后,在changepwd类的方法中使用global $db,然后来$db->query($sql)更好一些。
      

  2.   

    基本正确,凡与数据库操作有关的类,都可继承于数据库类。对你来讲就是mysql类
      

  3.   

    修改密码作为一个业务逻辑,并不能封装成功能类继承于mysql,而应该是作为一个业务逻辑类操作mysql类
    <?php
    class Mysql(){
    }
    class changepwd{
    function changepwd($newpwd,$user){
     /*to do something here ,but the most important  is to use  the db class be a global var,for example*/
        $db= new Mysql();
        $sql='' //change someone's pwd
        $db->query($sql)
    }}?>