只能说他解释的不对,所谓“标量”通常是指常数。显然不能圆满的解释
class class {
  var $v;
  function class($n="") {
    $this->v = $n;
  }
}
$o =new class($a);
这一事实。
当然,被传递的变量需要预先定义的

解决方案 »

  1.   

    应该是翻译错误吧。这种书常常有错误的,因为译者是很多人“拼”起来的,然后找一个专家审一下稿就pub了
      

  2.   

    再次看了php4的官方文档,原意应该是这样:
    在php4中要求类实例化的过程中,必须通过构造器(函数)设置类变量,而不能像一下这样:
    class abs{
      var $v1='abs';
      var $v2=array('1'=>'abs');
      var $v3=new otherClass;
      ...
    }
    规范的写法是
    class abs{
      var $v1;
      var $v2;
      var $v3;
      function abs(){
        $this->v1='abs';
        $this->v2=array('1'=>'abs');
        $this->v3=new otherClass;
      }
    }
    ----------------
        不过,事实上,在当前的版本中依然可以在构造器以外设置类变量。在第一段代码中,只有“var $v3=new otherClass;”不能编译通过。
        但是,既然php小组已经这样放话了,那么以后肯定是要严格按后者方式实例化对象的。就好像我曾提过关于“按引用传递对象的方式”在个别情况下已经不被php所推荐一样,以为将来会摒弃。
      

  3.   

    class abs
    {
        var $todays_date = date("Y-m-d");
        var $name = $firstname;
    }
    更符合php4提到的,不能用非常量初始化类变量
      

  4.   

    ABabyStudio(BabyStudio)
    说的挺有道理,好受启发启发!
      

  5.   

    小弟有个很让大家笑话的问题,但是,还是得问!其实类中的变量有什么用呀?
    class abs{
      function abs($v1,$v2,$v1){
        $v1='abs';
        $v2=array('1'=>'abs');
        $v3=new otherClass;
      }
    }
    不可以吗?
      

  6.   

    to : bonniewater
    你的写法只能构造函数自己看到变量$v1,$v2,$v3,其他函数是看不到的
      

  7.   

    哦,我明白了,类里面的变量是为了让类里面的函数都可以使用的
    也就是说我这样写可以,但是就失去了类的意义了多谢 ipman
      

  8.   

    这几个月沉迷于php的对象编程,也遇到了不少让我对php“义愤填膺”的问题,主要是版本升级造成的不兼容。准备写几例出来与诸位兄弟姐妹商榷。
        今天出第一贴:php3与php4中关于对象编程的不兼容问题之构造函数说
      

  9.   

    hehe,楼主我好崇拜你啊,英语太好了向你学习感觉php跟c++很类似,看不懂的时候去看c++
    触类旁通阿