“需要用类来写一些PHP的项目”
这表示你对“类”并没有理解面向对象编程,是一种编程的方法。更重要的是在于他的思维方式。

解决方案 »

  1.   

    看看IPB论坛,chinaz.com/download有下
      

  2.   

    简单来看留言板本身就是一个对象,它有属性(如贴子ID,留言人,内容等)方法(如添加留言,删除留言等)
    用类可以这样表示
    class guestbook
    {
        var $id; //贴子编号
        var $guest; //留言人
        var $content; //留言内容
        var $db;  // 数据库抽象类
        function guestbook(&$db)  //构造函数
        {
            $this->db = & $db;
        }
        //添加留言函数
        function add($guest,$content)
        {
            $sql = "INSERT INTO guestbook VALUES('','$guest','$content')";
            $this->db->query($sql);
            if($this->db->success())
                return 1;
            else
                return 0;
        }
         
        //删除留言函数
        function del($id)
        {
            $sql = "DELETE FROM guestbook WHERE id = '$id'";
             $this->db->query($sql);
            if($this->db->success())
                return 1;
            else
                return 0;
        }
    }
    -----------------------------------------
    在使用的时候就可以这样使用
    $db = & new mysql(); //初始化数据库对象
    $guestbook = new guestbook($db);  //建立留言板对象if ($guestbook->add($_POST['guest'],$_POST['content']))
      echo "留言添加成功";
    else
      echo "留言添加失败";
    ----------------------------------
    删除操作同上,只不过参数是id
    在这个类的基础上进行扩展就可以了,比如显示留言列表函数,计算留言总数等功能。。
      

  3.   

    楼上老大,我有点看不懂里面的构造函数的意思,还有外面为什么要$db = & new mysql(); 
    不用可不可以?一般我连接数据库是这样的:
    /**
    * CONNECT TO DATABASE
    */
    $DBNAME="EMAIL";
    $DBHOST="localhost";
    $DBPORT="3306";
    $DBUSER="root";
    $DBPWD="he651651";
    $link = @mysql_connect($DBHOST, $DBUSER, $DBPWD) or die("Could not connect: " . mysql_error());
    @mysql_select_db($DBNAME) or die("Can not select db.");1.你里面的$DB是不是我这里的$link?
    2.如果我没有这个构造函数可不可以?
      

  4.   

    你确实对“类”没有理解,建议看一下书$db = & new mysql(); 
    创建一个数据库类对象,这个mysql类封装了对mysql的操作
    如果你要使用sql server,那么可如法泡制一个mssql类
    $db = & new mssql(); 
    这样,类guestbook不需要做任何改动就将数据保存到sql server里了你给出的代码是面向过程编程的
      

  5.   

    mysql类就是将一般的数据库操作封装起来,如连接,查询,更新,等。
    和guestbook道理其实是一样的
    建议你还是先看一下面向对象的编程方法
      

  6.   

    对其实我觉得楼主主要对面向对像还是不太理解,如果楼主真的要理解面向对像的编程的话可以参考一下thinking in java 这本电子书, 很多地方都有下载的
      

  7.   

    我主要是为了提高代码的可重用性,和在修改的时候的健壮性,因为如果用传统的方法写PHP,写完一个比较大的项目以后,要改动很麻烦,思路上要重新理一下,不过用类了以后思路上会清晰,容易改动。
      

  8.   

    不要吵了,搂主可以翻翻最新的php手册,里面有简单的讲解的,看明白了,
    再来问问题
      

  9.   

    我现在刚工作不久,目前需要用类来写一些PHP的项目,但是我对于这样的写法总是没有思路,不知道大家以前刚开始学类写PHP的时候是怎么个过程,我现在有点郁闷。
    -------------------------------------------------------------------------
    答:刚开始的时候,连php是什么都不知道,以为它跟html一样。:)
    拿到一个东西,不知道哪些应该封装起来写成一个类。比如如果用类来写一个留言板程序,应该怎么写类?希望各位DD帮忙,给思路。
    -------------------------------------------------------------------------
    答:当你想以后不太累的时候就会想到代码重用,想到代码重用的第一步就是用函数,第二步就是用类了。如果你已经想到了第一步,说明你还不够懒,再懒一点用可以用类了:),如果你连第一步都还没有想到,说明你还非常勤奋,继续努力。
      

  10.   

    我主要是为了提高代码的可重用性,和在修改的时候的健壮性,因为如果用传统的方法写PHP,写完一个比较大的项目以后,要改动很麻烦,思路上要重新理一下,不过用类了以后思路上会清晰,容易改动。这个想法是正确的!
    不仅要掌握面向对象编程的思维方法,同时要了解软件工程中的一些概念

        function guestbook(&$db)  //构造函数
        {
            $this->db = & $db;
        }
    中,构造函数显式的传入一个数据库对象。这是必要的,不可省略的。
    如果你省略了这个传递,你就使 $this->db 变成不确定的了,或许你会把他声明指向某个外部变量。但这样做,就使的这个类不通用了
      

  11.   

    <?php
    class phpnew 
    {
    public a;
    public b;
    public c;
    function __construct($aa,$bb,$cc)
    {
    $this->a=aa;
    $this->b=bb;
    $this->c=cc;
    }
    function new
    {}
    function __destruct()
    {}
    }
    ?>
    这个是PHP5的写法 就是构造和析构函数 用专门的__construc __destruct 不过用以前PHP4的也可以 ,不过学还是PHP5的好
      

  12.   

    我还是用函数啊,数据库各种操作应该用类。不然那一天那个客户说要用xxx数据库,不能用
    mysql那就有得改了.用php自带的pear类也不错
      

  13.   

    好学习!!!!!!!我的程序很少用“泪”来封装,因为本来用一小时完成的留言板,,用类来写可能需要3个小时。嘿嘿!~~~~~   我喜欢偷懒,,  写php这么长时间,我只写过一个类(在图片上写任意的字:字体,大小,颜色,透明,位置,倾斜等),那是因为它的功能比较复杂,用函数来写不好实现其强大的功能。所以采用一个类封装他。用20分钟写好核心函数,用20小时改成类封装。所以不要以为类是什么先进技术,它只是一种方法,思路而已,该用是才用。
      

  14.   


        function guestbook(&$db)  //构造函数
        {
            $this->db = & $db;
        }
    中,构造函数显式的传入一个数据库对象。这是必要的,不可省略的。
    如果你省略了这个传递,你就使 $this->db 变成不确定的了,或许你会把他声明指向某个外部变量。但这样做,就使的这个类不通用了$this->db具有可变性,因此需要封装为类,在guestbook类中按照合成/聚合复用原则引用db是正确的。除此以外只能通过继承方法实施但不提倡,继承通常用于业务抽象层。通俗的理解是,在软件世界里不好的父亲通常产生不好的孩子(现实世界除外),因此不要随意继承。guestbook已经是具体业务的类,不存在是否通用的担忧。
      

  15.   

    看看这个网站http://www.blueshoes.org
    也许能给你些思路!
    别忘了给我加分!呵呵!