php的语法让人有点头疼,比如说定义一个变量 $a="dfadfdfd",就是给这个变量$a赋值,但是有时候我看php中在类中调用类的属性是这么调用的  $this->a ;这个a怎么不加$符号,按照语法说不加$符号的应该就是常量吧,那这个又是个没定义的常量,这不是有问题

解决方案 »

  1.   

    $this -> a意思是说这对象的a属性。
      

  2.   

    你也说了这个是类是吧?
    类里面调用类里的声明的变量就使用$this->a 而不是$a
      

  3.   

    楼主其实知道a是这个类的属性,他大概是郁闷为什么有时要在变量名前加$,有时又不加。其实这只是PHP的语言规范,咱们程序员照着这个规范写程序就是了。另PHP学习群:220851151,共同学习成长啊。
      

  4.   

    从c++转过来看php,感觉怪怪的,关于这个$理解起来还真是麻烦,php中怎么有的时候要加$符号,有的时候不加。我理解不加就应该是常量啊,常量有没有define那就什么也不是了啊。这算是个什么
      

  5.   

    类中的常量用的是另一套调用方法: self::常量名  。$this是在运行时才有效的,而类常量需要在未实例化时就确定下来。
    如果这么写 $this->$a ,满屏幕的$ 那么对有些人来说就烦死了(包括我)
      

  6.   

    就是设计时的定义,不论好与坏,它也是一种风格,遵守就好。
    没有实例化的类,可以直接调用的是静态方法,无论类是否实例化,都只存在一份。调用时
    CLASSNAME::METHOD(PARAMS);对于需要实例化的,即需要创建对象的类,大体都是这个过程
    $instance = new CLASSNAME(PARAMS);
    $instance->property = Something; // 属性
    $instance->method(params); // 方法其它的还有在类内部的一些特性使用
    比如
    self::method
    $this->xxx
    这些都可以类比,
    只是需要注意一下代码书写格式。随便写了点,不对的,请高手指点...
      

  7.   

    你为啥要把问题割裂了看呢?
    -> 用于表示对象的成员
    $this->a 表示是 $this 这个对象的成员 a
    有什么不对呢?
      

  8.   

    thanks all~~~
    只是一下难以习惯,习惯c++之后,有点不习惯~~·
      

  9.   

    其实这个理解起来也很容易,PHP本向不是面向对象语言,但是,它却支持面向对象
    这样,就出现了调用普通变量和类变量的问题,这两个肯定要做区别,不然就不知道调用的是哪个了
    例:
    var $a = 0;
    class A{
        var $a = 1;
        function test(){
            global $a;//需要声明一下才能直接调用类外面的变量$a
            echo "$a=".$a;//这里的$a值为0
            echo "<br>$a=".$this->a;//这里的$a值就是1
            
        }
    }希望这样可以帮你理解这两个的区别。
      

  10.   

    多看看PHP手册及实例代码:语言参考->类与对象
    http://download.csdn.net/detail/dmtnewtons/4122897