OBJEKT parent

WMix

герр M:)ller
Партнер клуба
OBJEKT parent

PHP:
<?php
//*************************
class test1 {
    var $xxx;

    function test1() {
        $this->xxx="yyy";
    }
}
//*************************
class test2{
    var $zzz
    function test2($obj1) {
    //programm
    }
}
//*************************
obj1=new test1();
obj2=new test2($obj1);
?>

в классе test2 мне нужен $obj1 для работы с методами
возможно ли в классе test2 без передачи $obj1 получить доступ к этому объекту имя переменной известна

function test2() {
echo $parent->obj1->xxx;
}
 

tony2001

TeaM PHPClub
PHP:
class test2{
    var $zzz;
    function test2($obj1) {
     global $obj1;
     $this->obj1 = $obj1;
    //programm
    }
}
так сойдет?
 

StUV

Rotaredom
вариант создания в тест2 переменной-члена типа тест1 не устраивает ?
(+ при необходимости инициализация этой переменной соответствующим конструктором)
 

WMix

герр M:)ller
Партнер клуба
2tony
global $obj1;
$this->obj1 = $obj1;
это копия или?

2StUV
переменной-члена типа тест1 //это как?
 

StUV

Rotaredom
PHP:
class test1
{
...
}
class test2
{
var $obj1;
function test2()
{
  $this->obj1 = new test1(); // 2tony: факт :)
  ...
}
...
}
...
 

tony2001

TeaM PHPClub
>это копия или?
ну сделай ссылку:
PHP:
class test2{
    var $zzz;
    function test2() {
       global $obj1;
       $this->obj1 = &$obj1;
    }
}

>переменной-члена типа тест1 //это как?
PHP:
class test2{
    var $zzz;
    function test2() {
       $this->obj1 = new test2;
    }
}
 

WMix

герр M:)ller
Партнер клуба
function test2($obj1) {
global $obj1;
echo $obj1->xxx;// тоже ОК
$this->obj1 = $obj1; // в этом случии
echo $this->obj1->xxx
//programm
}
как лутьше
 

WMix

герр M:)ller
Партнер клуба
2 StUV
это я знал
теперь заново готовый обj создовать только усложнит
много переменных передовать
 

StUV

Rotaredom
2WMix: перегрузи конструктор тест2 с параметром типа тест1
 

WMix

герр M:)ller
Партнер клуба
function test2 (){
$db=new mysql($host....)
$tpl=new temlate("tpl/")
mail=new dbmail($uid,$mid)
...
} память не резинавая
 

tony2001

TeaM PHPClub
>память не резинавая
ну раз "не резинОвая", то передавай в конструктор объекты по ссылке.
 

Screjet

Новичок
с ссылками на объекты нужно работать очень осторожно.
я бы так сделал:
PHP:
<?php 
//************************* 
class test1 { 
    var $xxx; 

    function test1() { 
        $this->xxx="yyy"; 
    } 
} 
//************************* 
class test2{ 
    var $zzz 
    function test2($obj1) { 
    //programm 
    } 
} 
//************************* 
obj2=new test2( new test1() ); 
//или так, но не рекомендую
obj2=new test2( & new test1() ); 
?>
 

WMix

герр M:)ller
Партнер клуба
2Screjet
ты написал то от чего я хотел уйти см пример 1
 
Сверху