免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1640 | 回复: 4
打印 上一主题 下一主题

新手请教一个问题,我在线等候您的回答 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-04 14:35 |只看该作者 |倒序浏览
我刚学php不久,现在看书,有一点不懂,请教大家帮忙解释一下,谢谢
例4-1:用户自定义UnitCounter的定义
<?php
//类UnitCounter的定义
class UnitCounter
{
        //成员变量
      var $units = 0;
         var $weightPerUnit = 1.0
        //将$n加至总数,$n的默认值为1
         function add($n = 1)
        {
         $this->units = $this->units + $n;
        }
        //计算总重量的成员函数
      function totalweight()
         {
          return $this->units*this->weightPerUnit;
         }
}
?>
其中,我看不懂的地方,是$this->units = $this->units + $n;这一行,units是一个变量名,为什么前边要加上一个“$this->”,加上“$this->"有什么含义,谢谢大家帮忙解释一下

[ 本帖最后由 wjf_1979 于 2007-2-4 06:42 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-02-04 16:40 |只看该作者
$this->units

可以理解成引用你类里定义的变量。。


  1. class Person{
  2.   var $name;

  3.   function setName($name){
  4.     $this->name=$name;
  5. }


  6.   function getName(){
  7.      return $this.name;
  8.   }
  9. }

复制代码


没有加 $this的name,,,是外部传来的变量,,,而$this->name是这个person类中的变量,,,

getName函数返回的是类的变量name,,

你可以这么调用这个类

  1. $qiao = new Person();
  2. echo $qiao->getName(); //步骤1
  3. $qiao->setName('小乔');
  4. echo $qiao->getName();//步骤2
复制代码


看下步骤1,2差别.

这个php手册讲了些你可以看看,,

[ 本帖最后由 james.liu 于 2007-2-4 16:49 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-02-04 17:11 |只看该作者
非常感谢,不知道你还在吗?这个$this是固定的吗?假如我这么写可以吗?比如换成
$that->units = $that->units + $n;这样可以吗?

[ 本帖最后由 wjf_1979 于 2007-2-4 09:16 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-02-04 18:44 |只看该作者
原帖由 wjf_1979 于 2007-2-4 17:11 发表
非常感谢,不知道你还在吗?这个$this是固定的吗?假如我这么写可以吗?比如换成
$that->units = $that->units + $n;这样可以吗?


汗,that

$this
$parent
还有其它几个,可以把它们当做关键字来看


  1. <?php
  2. class Person{
  3.   var $name;

  4.   function setName($name=''){
  5.     //$this->name=$name;
  6.         $GLOBALS['p']->name = '老不死';
  7. }


  8.   function getName(){
  9.      return $this->name;
  10.   }
  11. }
  12. $p = new Person();
  13. $p->name = '大乔';

  14. print $p->getName();
  15. $p->setName();
  16. print $p->getName();
  17. ?>
复制代码

$this 是在类初始化的时候定义的,是对自身的引用,像上面,在一定程度上 $this->name 和 $GLOBALS['p']->name (即 $p->name 由于 $p 在外部实例化的,所以要从全局变量$GLOBALS中取) 是同一个意思

不过,好像真的有语言是把that也当个关键字来用的

[ 本帖最后由 Namelessxp 于 2007-2-4 18:45 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-02-05 12:49 |只看该作者
谢谢指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP