这是我创建一个类实例的情况
$newobj = new classname1;
Run Code Online (Sandbox Code Playgroud)
然后我在下面有另一个类写,我希望这个类访问上面的对象
class newclass {
public function test() {
echo $newobj->display();
}
}
Run Code Online (Sandbox Code Playgroud)
这是不允许的,有没有办法通过类全局定义变量?
这是允许的,但您需要使用适当的语法:global关键字或$GLOBALS超全局:
http://es.php.net/manual/en/language.variables.scope.php
http://es.php.net/manual/en/reserved.variables.globals.php
<?php
class classname1{
private $id;
public function __construct($id){
$this->id = $id;
}
public function display(){
echo "Displaying " . $this->id . "...\n";
}
}
$newobj = new classname1(1);
class newclass {
public function test() {
global $newobj;
echo $newobj->display();
}
public function test_alt() {
echo $GLOBALS['newobj']->display();
}
}
$foo = new newclass;
$foo->test();
$foo->test_alt();
?>
Run Code Online (Sandbox Code Playgroud)
但是,必须始终谨慎使用全局变量.它们可能导致难以理解和维护的代码以及难以追踪的错误.通常传递所需的参数通常更容易:
<?php
class classname1{
private $id;
public function __construct($id){
$this->id = $id;
}
public function display(){
echo "Displaying " . $this->id . "...\n";
}
}
$newobj = new classname1(1);
class newclass {
public function test(classname1 $newobj) {
echo $newobj->display();
}
}
$foo = new newclass;
$foo->test($newobj);
?>
Run Code Online (Sandbox Code Playgroud)
最后但同样重要的是,您可能正在寻找单例OOP模式:
http://en.wikipedia.org/wiki/Singleton_pattern
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |