php 函数内实例化 对象

<?php
class common
{
var $db;
var $recordNum;
function Common()
{
global $db; //创建全局变量
if(!isset($db)) //检查db异常
return false;
$this->db=$db; //实例化数据库
}

//异常排错方法
function debug()
{
$this->db->debug(); //报错抛出

}
}

?>
--------------------------
$this->db=$db; 中的 $this->db是一个对象吗?db代表函数内的?$db又代表哪一个呢?在class B extends Common{ var $tablename=table; ....$this->db->$tablename;……}继承类里可以这样访问,难道this->db还是一个对象?this不是指自身对象了吗?

第1个回答  推荐于2016-01-10
楼主,你面向对象还没有弄清楚
这个要自己的理解,$this->db=$db,$this-db,不是一个对象,这是一个访问的方法,在一个class内要访问所属的变量,必须要用$this->来访问,其中的$db,是你自己创建的一个全局的变量
华丽的分割线----------------------------------
我总算看明白了,你这里的$db,其实已经被实例化了,$this->db,是一个内部访问的变量,这个变量其实就是$db,而$db是一个对象,$this->db,你可以了解是对象,这是相对的,我说的比较哆嗦了。
下面,我再说一下吧,有助于你了解
---------------------------
<?php
class common
{
var $db;创建$db变量,这里的变量只是class common里的变量
var $recordNum;
function Common()
{
global $db; //创建全局变量,请注意,这个$db其实已经是对角了,在这个class外面,$db=new classname(),这你要了解
if(!isset($db)) //检查db异常
return false;
$this->db=$db; //实例化数据库,这边是赋值,其实,你把两个db弄混了,一个是内部的变量,一个是外部的对象,这里就是将外部的对象赋值对内部的变量。
}
//总的来讲,你不过,在你的class里用了其他地方的对象而已
//异常排错方法
function debug()
{
$this->db->debug(); //报错抛出

}
}

?>追问

global $db 是外部一个已经实例化了的数据库对象

追答

是的,$db是一个实例化的对象,而class内部的$db,只是class里面的局部变量。其实你的命名有点混乱,最好不要这样命名

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网