关于用类来写PHP程序的方法? “需要用类来写一些PHP的项目”这表示你对“类”并没有理解面向对象编程,是一种编程的方法。更重要的是在于他的思维方式。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看IPB论坛,chinaz.com/download有下 简单来看留言板本身就是一个对象,它有属性(如贴子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在这个类的基础上进行扩展就可以了,比如显示留言列表函数,计算留言总数等功能。。 楼上老大,我有点看不懂里面的构造函数的意思,还有外面为什么要$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.如果我没有这个构造函数可不可以? 你确实对“类”没有理解,建议看一下书$db = & new mysql(); 创建一个数据库类对象,这个mysql类封装了对mysql的操作如果你要使用sql server,那么可如法泡制一个mssql类$db = & new mssql(); 这样,类guestbook不需要做任何改动就将数据保存到sql server里了你给出的代码是面向过程编程的 mysql类就是将一般的数据库操作封装起来,如连接,查询,更新,等。和guestbook道理其实是一样的建议你还是先看一下面向对象的编程方法 对其实我觉得楼主主要对面向对像还是不太理解,如果楼主真的要理解面向对像的编程的话可以参考一下thinking in java 这本电子书, 很多地方都有下载的 我主要是为了提高代码的可重用性,和在修改的时候的健壮性,因为如果用传统的方法写PHP,写完一个比较大的项目以后,要改动很麻烦,思路上要重新理一下,不过用类了以后思路上会清晰,容易改动。 不要吵了,搂主可以翻翻最新的php手册,里面有简单的讲解的,看明白了,再来问问题 我现在刚工作不久,目前需要用类来写一些PHP的项目,但是我对于这样的写法总是没有思路,不知道大家以前刚开始学类写PHP的时候是怎么个过程,我现在有点郁闷。-------------------------------------------------------------------------答:刚开始的时候,连php是什么都不知道,以为它跟html一样。:)拿到一个东西,不知道哪些应该封装起来写成一个类。比如如果用类来写一个留言板程序,应该怎么写类?希望各位DD帮忙,给思路。-------------------------------------------------------------------------答:当你想以后不太累的时候就会想到代码重用,想到代码重用的第一步就是用函数,第二步就是用类了。如果你已经想到了第一步,说明你还不够懒,再懒一点用可以用类了:),如果你连第一步都还没有想到,说明你还非常勤奋,继续努力。 我主要是为了提高代码的可重用性,和在修改的时候的健壮性,因为如果用传统的方法写PHP,写完一个比较大的项目以后,要改动很麻烦,思路上要重新理一下,不过用类了以后思路上会清晰,容易改动。这个想法是正确的!不仅要掌握面向对象编程的思维方法,同时要了解软件工程中的一些概念在 function guestbook(&$db) //构造函数 { $this->db = & $db; }中,构造函数显式的传入一个数据库对象。这是必要的,不可省略的。如果你省略了这个传递,你就使 $this->db 变成不确定的了,或许你会把他声明指向某个外部变量。但这样做,就使的这个类不通用了 <?phpclass 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的好 我还是用函数啊,数据库各种操作应该用类。不然那一天那个客户说要用xxx数据库,不能用mysql那就有得改了.用php自带的pear类也不错 好学习!!!!!!!我的程序很少用“泪”来封装,因为本来用一小时完成的留言板,,用类来写可能需要3个小时。嘿嘿!~~~~~ 我喜欢偷懒,, 写php这么长时间,我只写过一个类(在图片上写任意的字:字体,大小,颜色,透明,位置,倾斜等),那是因为它的功能比较复杂,用函数来写不好实现其强大的功能。所以采用一个类封装他。用20分钟写好核心函数,用20小时改成类封装。所以不要以为类是什么先进技术,它只是一种方法,思路而已,该用是才用。 在 function guestbook(&$db) //构造函数 { $this->db = & $db; }中,构造函数显式的传入一个数据库对象。这是必要的,不可省略的。如果你省略了这个传递,你就使 $this->db 变成不确定的了,或许你会把他声明指向某个外部变量。但这样做,就使的这个类不通用了$this->db具有可变性,因此需要封装为类,在guestbook类中按照合成/聚合复用原则引用db是正确的。除此以外只能通过继承方法实施但不提倡,继承通常用于业务抽象层。通俗的理解是,在软件世界里不好的父亲通常产生不好的孩子(现实世界除外),因此不要随意继承。guestbook已经是具体业务的类,不存在是否通用的担忧。 看看这个网站http://www.blueshoes.org也许能给你些思路!别忘了给我加分!呵呵! 我也请教正则表达式 讨论一下,这是如何实现的 主机不能访问虚拟机 PHP删除XML结点的奇怪现象, 哪位高手推荐一款比较好用的邮件系统,Linux平台的 很久不上来了 散分散分 急!请大侠帮忙!! php网页出现Error FW-1 at NOKIA-IP350-4: Access denied 这是怎么回事啊? 接File Database的源程序04: 酒店预定的问题 关于乱码的问题. 请问如何在Php的Select中使用Count()计算个数?
用类可以这样表示
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
在这个类的基础上进行扩展就可以了,比如显示留言列表函数,计算留言总数等功能。。
不用可不可以?一般我连接数据库是这样的:
/**
* 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.如果我没有这个构造函数可不可以?
创建一个数据库类对象,这个mysql类封装了对mysql的操作
如果你要使用sql server,那么可如法泡制一个mssql类
$db = & new mssql();
这样,类guestbook不需要做任何改动就将数据保存到sql server里了你给出的代码是面向过程编程的
和guestbook道理其实是一样的
建议你还是先看一下面向对象的编程方法
再来问问题
-------------------------------------------------------------------------
答:刚开始的时候,连php是什么都不知道,以为它跟html一样。:)
拿到一个东西,不知道哪些应该封装起来写成一个类。比如如果用类来写一个留言板程序,应该怎么写类?希望各位DD帮忙,给思路。
-------------------------------------------------------------------------
答:当你想以后不太累的时候就会想到代码重用,想到代码重用的第一步就是用函数,第二步就是用类了。如果你已经想到了第一步,说明你还不够懒,再懒一点用可以用类了:),如果你连第一步都还没有想到,说明你还非常勤奋,继续努力。
不仅要掌握面向对象编程的思维方法,同时要了解软件工程中的一些概念
在
function guestbook(&$db) //构造函数
{
$this->db = & $db;
}
中,构造函数显式的传入一个数据库对象。这是必要的,不可省略的。
如果你省略了这个传递,你就使 $this->db 变成不确定的了,或许你会把他声明指向某个外部变量。但这样做,就使的这个类不通用了
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的好
mysql那就有得改了.用php自带的pear类也不错
function guestbook(&$db) //构造函数
{
$this->db = & $db;
}
中,构造函数显式的传入一个数据库对象。这是必要的,不可省略的。
如果你省略了这个传递,你就使 $this->db 变成不确定的了,或许你会把他声明指向某个外部变量。但这样做,就使的这个类不通用了$this->db具有可变性,因此需要封装为类,在guestbook类中按照合成/聚合复用原则引用db是正确的。除此以外只能通过继承方法实施但不提倡,继承通常用于业务抽象层。通俗的理解是,在软件世界里不好的父亲通常产生不好的孩子(现实世界除外),因此不要随意继承。guestbook已经是具体业务的类,不存在是否通用的担忧。
也许能给你些思路!
别忘了给我加分!呵呵!