<?php class controller { var $db; var $user; function init_db() { $this->db = new db(); $this->db->host = 'localhost'; } function init_user() { $this->user = new user($this); } } class db { var $host; } class user { var $controller; var $db; function __construct(&$controller) { $this->controller = $controller; $this->db = $controller->db; } function login() { var_dump($this->db); } } $controller = new controller(); $controller->init_user(); $controller->init_db(); $controller->user->login(); // Output NULL, Why not output localhost
关于上面的代码,最后一行为什么不输出 localhost
$this->user = new user($this);
代码中这句实例化的时候传入的是当前对象 即为
$controller = new controller();相对应的参数分别是$db 和$user 分别是空值,所以不会输出你想要的结果;
$this->db = & $controller->db;
这样就对了 在user类里
目前输出的是什么?
NULL