当前位置:Gxlcms > PHP教程 > 构造方法问题

构造方法问题

时间:2021-07-01 10:21:17 帮助过:24人阅读

我一直理解是创建对象后 构造方法才自动调用的 测试出错了
class o{ 	public function __construct(){		var_dump($object);	}}$object = new o;


错误信息:Notice: Undefined variable: object


回复讨论(解决方案)

构造方法要传入变量
class o{

public function __construct($object){
var_dump($object);
}
}
$str = "";
$object = new o($str);

class o{

public function __construct(){
var_dump($object);
}
}

类里面没有$object变量,所以输出Notice: Undefined variable: object

如果你想初始化时获取$object,可以传入来,例如:

name = 'fdipzone';$object = new o($oo);?>

报错是因为变量不存在,你的代码不符合变量作用域的约定
加上 global $object; 就可以了

你可看到输出的是 NULL
这是 new o 之后才会把对象赋值给 $object;,而构造函数是在对象创建时执行的

class o{  public function __construct(){    global $object; //加上这个    var_dump($object); //
输出 NULL }} $object = new o;var_dump($object); //输出 object(o)#1 (0) { }

自古答案出自楼上

@xuzuning new o 之后有了对象 就自动调用了构造方法完 了 再把对象的引用 赋给 $object 是这样吗?版主大牛

new o 是一个动作,从类 o 创建一个对象
php 在创建对象时,调用了构造函数(这样你就有机会做一些你自己的事情)

注意:
$object = new o;
$object 得到的不是 new o 的引用,而是 new o 本身
只一点,无论是 php4 还是 php5 都是一样的

@xuzuning 哦,我知道构造方法 ,但是就是不知道什么时候 调用的,:new o 之后有了对象 就自动调用了构造方法完 了 再把对象的引用 赋给 $object 是这样吗?

@xuzuning 是这样吗? 在php上的 资源和对象的赋值方式是引用哦?

new 并不是赋值
它是将对象和变量捆绑在一起

@xuzuning 原来如此 那么引用一说 的怎么的呢?麻烦说说

class T {  public $v = 1;  function see() {    echo $this->v, PHP_EOL;  }}$a = new T;$b = new T;$a->v = 2;$a->see(); //2$b->see(); //1 如果 new 传递的是引用,那么为什么是1 而不是 2 呢?$c = $b; //对象赋值传递的是引用$c->v = 100;$b->see(); //100$c->see(); //100 所以 $b->v 变了,$c->v 也跟着变了

@xuzuning 明白了

看来你对类中的构造方法等情况理解的并不透彻,,构造方法的作用是什么,,构造方法是初始化对象,如果在新建对象的时候,不赋值,构造方法就没有意义了

人气教程排行