Strona 1 z 1
[php]Atrybut innej klasy w mojej klasie.
: pn paź 13, 2008 12:27 am
autor: new_account
W c++ to by wygladalo mniej wiecej tak
Kod: Zaznacz cały
public class pierwsza{
public:
int counter;
}
public class druga{
public:
pierwsza atrybut;
}
Czy w php tez tak sie da? Da sie od razu zadeklarowac typ atrybutu? Tak jak w tej drugiej klasie [pierwsza atrybut]? To by wiele ulatwilo

Re: [php]Atrybut innej klasy w mojej klasie.
: pn paź 13, 2008 7:20 am
autor: gorylek
W PHP nie ma takiej kontroli typów jak w C++ a co za tym idziesz, nie deklarujesz typu zmiennej . A w tym wypadku wyglądało by to tak:
Kod: Zaznacz cały
class pierwsza{
counter;
}
class druga{
atrybut = new pierwsza;
}
Wymusić typ możesz za pomocą rzutowania zaś co do modyfikatorów dostępu, każdy element klasy w C++ bez modyfikatora był prywatny. W PHP jest on domyślnie publiczny. No i przygotuj się na wstawiania tony $this-> w klasie :/ Same modyfikatory musisz stawiać przed każdym elementem niepublicznym.
Re: [php]Atrybut innej klasy w mojej klasie.
: pn paź 13, 2008 9:48 am
autor: new_account
no wlasnie takie cos jest nielegalne, zeby w klasie tak zrobic [atrybut = new pierwsza; ]. Wywala mi blad i w sumie slusznie, bo mamy tu doczynienia z przypisaniem obiektu do atrybutu za pomoca operatora new. A atrybut jest tutaj taki, ze tak powiem "abstrakcyjny"[?]

Re: [php]Atrybut innej klasy w mojej klasie.
: pn paź 13, 2008 11:23 am
autor: gorylek
Przeprasza, zagalopowałem się i palnąłem bez zastanowienia. Od takich rzeczy jest konstruktor:
Kod: Zaznacz cały
<?php
class pierwsza
{
public function testuj()
{
echo "Test funkcji";
}
}
class druga
{
public $atrybut;
public function __construct()
{
$this->atrybut = new pierwsza;
}
}
$zmienna = new druga;
$zmienna->atrybut->testuj();
?>
i w ten sposób wszystko chodzi. Porąbało mi się gdyż mało kiedy robię taki trik, wychodzę z założenia że obiekt należy stworzyć wtedy gdy jest potrzebny i ani jotę wcześniej. Głównie dlatego że może wyniknąć sytuacja (kwestia skryptu oczywiście) gdy nie jest on potrzebny więc na darmo tworzyć obiekt który zajmuje pamięć nie ma sensu.
http://img261.imageshack.us/img261/4554 ... anugl9.png