首页 新闻 会员 周边

php作用域问题和$this问题

0
[已解决问题] 解决于 2010-03-20 09:02

我看了别人写了一个类:

 

1 class db{
2
3  private $link = null;
4
5  public __construct($db_host, $db_user, $db_pwd) {
6
7  $this->link = mysql_connect($db_host, $db_user, $db_pwd);
8 }
9
10 public __destruct() {
11
12 if ($this->link)
13 {
14 @mysql_close($this->link);
15 }
16 }
17
18 }
这样写__destruct里面的代码永远也不会被执行是吧,因为在__construct里面的$link只有在自己函数
范围内可见,我这种想法对么。

还有,我看到有一些函数,直接return %this,这到底返回了啥子哦

 

pboyin的主页 pboyin | 初学一级 | 园豆:199
提问于:2010-03-19 09:25
< >
分享
最佳答案
0

疑问1:_destruct析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

疑问2:this就是指向当前对象实例的指针,不指向任何其他对象或类。

代码注解:

代码
class UserName
{
//定义属性
private $name;

//定义构造函数
function __construct( $name )
{
$this->name = $name; //这里已经使用了this指针
}

//析构函数
function __destruct(){}

//打印用户名成员函数
function printName()
{
print( $this->name ); //又使用了this指针
}
}

 

风影极光 | 小虾三级 |园豆:1573 | 2010-03-19 18:59
其他回答(1)
0

这里有一文讲解了  PHP this,self 和 parent 关键字 详解。看看能不能解决你的问题。

西越泽 | 园豆:10775 (专家六级) | 2010-03-19 18:44
这些大体我都知道,我就是看到有人写类似我上面的代码,那个$link变量应该在各个函数里面才有效才对,像我上面那样写不就等于白写了?因为$link在函数里面都成了局部变量了
支持(0) 反对(0) pboyin | 园豆:199 (初学一级) | 2010-03-20 00:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册