作者JoeHorn (狮子男)
看板PHP
标题Re: [请益] 想研究class
时间Wed Jan 16 00:14:29 2008
※ 引述《JYHuang (夏天到了,冷不起来了说)》之铭言:
请把 class DB 改成这样 (我不确定你是不是用 PHP5 ,所以直接用 var):
class DB {
var $_result = NULL;
function connect($server) {
mysql_connect(......);
}
function query($sql) {
$this->_result = mysql_query($sql);
}
function fetch() {
return mysql_fetch_array($this->_result);
}
}
: $databse = DB::connect($server);
: $result = $databse->query($sql);
: $row = $result->fetch(); <--问题出在这里
你的 $result 已经传出来到物件外面了。
$this 指的是物件本身,而你原本定义的这个物件里面根本没资料,
只有三个 method : connect、query、fetch 。
所以,在物件里面的 fetch() 呼叫 mysql_fetch_array($this) 时,
传递的参数错得很离谱,因为 $this 是物件本身。
而且,你也没有在物件里面定义变数来存 query result 。
: 我的理解是
: $result 已经不是跟$databse是同一个DB建构出来的实体了
: 所以$result不能用DB的子建构…
: 是这样吗?那又要如何去.."继承(要这样讲吗?)"呢?
物件的继承不是这样解释的,建议您多看些资料或书籍。
如果要学物件导向,我会建议用 JAVA 。
如果您熟悉 PHP ,不想碰 JAVA ,网页上也有些 sample 。
PHP4 可以参考
http://tw.php.net/manual/en/language.oop.php 。
PHP5 可以参考
http://tw.php.net/manual/en/language.oop5.php 。
当然,有看过的人都知道, PHP 5 才真的有物件导向的精神。
所以,我会建议您用 PHP 5 , PHP 4 并不适合拿来学习物件导向。
--
Linux is for people who want to know why it works.
Mac is for people who don't want to know why it works.
DOS is for people who want to know why it does not work.
Windows is for people who don't want to know why it does not work.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.113.173.172
※ 编辑: JoeHorn 来自: 59.113.173.172 (01/16 00:19)
1F:推 JYHuang:十分感谢~ 01/16 00:33