只能说他解释的不对,所谓“标量”通常是指常数。显然不能圆满的解释
class class {
var $v;
function class($n="") {
$this->v = $n;
}
}
$o =new class($a);
这一事实。
当然,被传递的变量需要预先定义的
class class {
var $v;
function class($n="") {
$this->v = $n;
}
}
$o =new class($a);
这一事实。
当然,被传递的变量需要预先定义的
在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所推荐一样,以为将来会摒弃。
{
var $todays_date = date("Y-m-d");
var $name = $firstname;
}
更符合php4提到的,不能用非常量初始化类变量
说的挺有道理,好受启发启发!
class abs{
function abs($v1,$v2,$v1){
$v1='abs';
$v2=array('1'=>'abs');
$v3=new otherClass;
}
}
不可以吗?
你的写法只能构造函数自己看到变量$v1,$v2,$v3,其他函数是看不到的
也就是说我这样写可以,但是就失去了类的意义了多谢 ipman
今天出第一贴:php3与php4中关于对象编程的不兼容问题之构造函数说
触类旁通阿