Jak předat dítěti objekt vlastního rodiče v PHP?

Kit

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #15 kdy: 15. 01. 2018, 20:56:01 »
Ty chceš dávat auto do doplňků? To myslíš vážně? Viděl jsi už někdy auto? Už jsi někdy zkusil strčit auto do rádia?


Lexa

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #16 kdy: 15. 01. 2018, 20:56:30 »
Předpokládám, že takto je to špatně

proč?
proč to chci udělat nebo proč je to špatně?

Kit

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #17 kdy: 15. 01. 2018, 20:58:22 »
Předpokládám, že takto je to špatně

proč?

Bylo by to dobře, kdyby tam v parametru nebylo $this.

Lexa

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #18 kdy: 15. 01. 2018, 20:59:54 »
Ty chceš dávat auto do doplňků? To myslíš vážně? Viděl jsi už někdy auto? Už jsi někdy zkusil strčit auto do rádia?
Ano chci, chci se totiž dostat z doplňků přes objekt Auto do class Prislusenstvi, class Upravy atd...

gll

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #19 kdy: 15. 01. 2018, 21:02:41 »
Předpokládám, že takto je to špatně

proč?
proč to chci udělat nebo proč je to špatně?

Proč je to špatně? Proč to chceš udělat asi víš nejlépe ty.


gll

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #20 kdy: 15. 01. 2018, 21:07:17 »
Ty chceš dávat auto do doplňků? To myslíš vážně? Viděl jsi už někdy auto? Už jsi někdy zkusil strčit auto do rádia?

myslím to vážně. Rozlišuji mezi programem a reálným světem. Strkání auta do rádia je jen tvá interpretace.

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #21 kdy: 15. 01. 2018, 22:01:00 »
Ahojte, když vytvořím třídu s názvem Auto, v ní vytvořím další třídu Doplnky jaký mám nastavit parametr při vytváření třídy Doplnky, abych se dostal na objekty třídy Auto uvnitř třídy Doplnky? Ví někdo? Díky.

Pokud se bavíme o dědění, tak otázka nemá smysl - Doplnek by skutečně neměl být potomek třídy Auto. Potomkem třídy auto by mohl být například Osobak a Nakladak - mnemotechnická pomůcka Osobak je Auto.

Doplnek je ve skutečnosti součást auta a platí zde skládání. Mnemotechnická pomůcka: Auto Doplnek. Pak otázka může mít smysl a mohlo by to být například takto (dovolil jsem si ponechat české názvy).

Kód: (php) [Vybrat]
<?php

class Auto {

    protected 
$sModel   null;
    protected 
$aDoplnky = array();

    public function 
__construct($sModel){
        
$this->sModel $sModel;
    }

    public function 
pridejDoplnek($oDoplnek){
        
$oDoplnek->nastavAuto($this);
        
array_push($this->aDoplnky$oDoplnek);
    }

    public function 
dejModel(){
        return 
$this->sModel;
    }

    public function 
dejDoplnky(){
        return 
$this->aDoplnky;
    }

    public function 
__toString(){
        
$sToReturn get_class($this) . ' "' $this->sModel '" pocet doplnku ' sizeof($this->aDoplnky) . ' (';
        
$bSeparuj  false;
        foreach (
$this->aDoplnky as $oDoplnek){
            if(
$bSeparuj){
                
$sToReturn .= ', ';
            }
            
$sToReturn .= $oDoplnek;
            
$bSeparuj true;
        }
        
$sToReturn .= ')';
        return 
$sToReturn;
    }

}

class 
Doplnek {

    protected 
$sNazev null;
    protected 
$oAuto  null;

    public function 
__construct($sNazev){
        
$this->sNazev $sNazev;
    }

    public function 
nastavAuto($oAuto){
        if(
$this->oAuto === null){
            
$this->oAuto  $oAuto;
        } else {
            throw new 
Exception("Doplnek je jiz instalovan v jinem aute!");
        }
    }

    public function 
dejNazev()    {
        return 
$this->sNazev;
    }


    public function 
__toString(){
        return 
get_class($this) . ' "' $this->sNazev '" v ' . ($this->oAuto !== null get_class($this->oAuto) . ' "' $this->oAuto->dejModel() . '"'"NULL");
    }


}

$oSkoda = new Auto("Skoda 120");

$oKlima = new Doplnek("Klimatizace");
$oRadio = new Doplnek("Autoradio");
$oTempo = new Doplnek("Tempomat");

print(
$oSkoda  "\n");
print(
$oKlima "\n");
print(
$oRadio "\n");
print(
$oTempo "\n");

$oSkoda->pridejDoplnek($oKlima);
$oSkoda->pridejDoplnek($oRadio);
$oSkoda->pridejDoplnek($oTempo);

print(
$oSkoda  "\n");
print(
$oKlima "\n");

$oGolf = new Auto("WV Golf");

$oNavigace = new Doplnek("Navigace");
$oGolf->pridejDoplnek($oNavigace);
// $oGolf->pridejDoplnek($oTempo); // <-- toto jsme nepovolili

print($oGolf "\n");

?>



.

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #22 kdy: 15. 01. 2018, 22:13:05 »
Fajn, a jak dostanu do komponenty Doplnky objek třídy Auto? Předpokládám, že takto je to špatně
Kód: [Vybrat]
class Auto{
  function __construct(){
    $obj = new Doplnky ( $this);
  }
}
Na tom teoreticky není nic špatně. Jen bacha na to, že jsi v konstruktoru a co s tím objektem děláš.

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #23 kdy: 15. 01. 2018, 22:13:29 »
Ty chceš dávat auto do doplňků? To myslíš vážně? Viděl jsi už někdy auto? Už jsi někdy zkusil strčit auto do rádia?
Ano chci, chci se totiž dostat z doplňků přes objekt Auto do class Prislusenstvi, class Upravy atd...

On chce mít asi vazbu Auto - Doplnek, což je běžný požadavek. Bude mít relaci buď 1:1 nebo 1:N nebo N:N, podle toho zda eviduje instance nebo jen jejich kategorie (zda eviduje u doplňku například sériové číslo nebo zda mu jen stačí, že je v autě obecně nějaké rádio). Pak sice nebude „auto strčené v rádiu“, ale to rádio může vědět, v jakém autě je nainstalované a může si tudíž držet odkaz na jeho instanci. Zda to je dobrý nápad nebo není se nedá bez dalšího s určitostí říct. Může to vést k cyklickým referencím, což může vadit při serializaci, zhoršuje se přehled o kompetencích atd, nicméně to může  dávat smysl.

.

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #24 kdy: 15. 01. 2018, 22:14:10 »
Je jasné, že má jen zmatek v terminologii. Strčte si... doplněk do auta. KONEC.

Kit

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #25 kdy: 15. 01. 2018, 22:24:15 »
Ty chceš dávat auto do doplňků? To myslíš vážně? Viděl jsi už někdy auto? Už jsi někdy zkusil strčit auto do rádia?

myslím to vážně. Rozlišuji mezi programem a reálným světem. Strkání auta do rádia je jen tvá interpretace.

No jo, i v reálném světě můžeš auto strčit do rádia. Výsledkem je rádio.

YCC

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #26 kdy: 16. 01. 2018, 00:06:22 »
Ty chceš dávat auto do doplňků? To myslíš vážně? Viděl jsi už někdy auto? Už jsi někdy zkusil strčit auto do rádia?

myslím to vážně. Rozlišuji mezi programem a reálným světem. Strkání auta do rádia je jen tvá interpretace.

No jo, i v reálném světě můžeš auto strčit do rádia. Výsledkem je rádio.

Pics or it did not happen.

kolega

Re:Jak předat dítěti objekt vlastního rodiče v PHP?
« Odpověď #27 kdy: 16. 01. 2018, 14:41:56 »
Qt/C++ tohle dělá tak, že jako první parametr předává pointer na rodiče ...

Takže holt si definovat konstruktor tak, aby se předával rodič (když je to nutné)