Il est permis, mais vous devez utiliser la syntaxe appropriée: soit le mot-clé global
ou $GLOBALS
superglobale:
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();
?>
Cependant, les variables globales doivent toujours être utilisées avec précaution. Ils peuvent conduire à un code difficile à comprendre et à maintenir et à des bogues difficiles à localiser. Il est normalement plus facile de passer simplement les arguments requis:
<?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);
?>
Last but not least, vous cherchez peut-être le modèle POO singleton:
http://en.wikipedia.org/wiki/Singleton_pattern
ne semble pas une bonne idée de –
Ce n'est pas toujours une mauvaise idée, que $ newobj soit une instance d'une classe de base de données, alors c'est plutôt utile – Harmen
dans ma condition – Starx