Autor Zpráva
Sunucuu
Profil
Dobré ráno,

je nějaký způsob jak v třídě Second vypsat variable z třídy First kromě toho, který mám uvedený? $this nechci používat, jelikož pak když je toho víc, tak se v tom člověk špatně orientuje, když má všude $this a pak ani neví, ze které rodičovské třídy to vlastně je...

Ideální by bylo použít vypsání například tímto stylem (abych rozeznal, že to pochází z třídy First...:
echo $first->variable;

Ovšem to zase vyžaduje použití global $first; a to nechci...

Jsou ještě jiné možnosti než použít $this a global?

Děkuji.


<?php

Class First {

  public function __construct(){
    $this->firstvariable = 'first';
  }

}

$first = new First;

Class Second extends First {

  public function __construct(){
    parent::__construct();
    echo $this->variable;
  }

}

$second = New Second;
?>

Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Bertram
Profil
Sunucuu:
Ahoj, $this je proměnná zastupující objekt a pokud vzniká ze tříd, které jsou svázané dědičností, tak jde o závislost typu (potomek je určitý druh předka)
a dle mého by jsi se neměl snažit rozlišovat v jaké z těch tříd je daná vlastnost deklarována.
Sunucuu
Profil
Bertram:
Chápu, právě, že i ve všech kódech jsem viděl použití pouze $this, ale já osobně když vidím delší kód a vidím tam milion proměnných, tak občas mě třeba zajímá z jaké třídy pochází a dohledávat to "ručně" je zbytečně časově náročné a dávat proměnné v každé třídě s nějakým identifikátorem (abych poznal z jaké pochází třídy), např názvy promměných typu $this->Fvariable (F = first), $this->Svariable (S = second) se mi zdá složité... Možná řeším hloupost a navrhuji to špatně, ale nějaké rozlišení by se mi hodilo...

Opravdu žádná jiná možnost kromě $this-> a global se nenabízí? :)

Děkuji.
Nox
Profil
Sunucuu:
Právě by to vůbec nemělo být potřeba.
Jinak pokud máš IDE (Netbeans...), často stačí třeba ctrl+kliknout na proměnnou a skočí to na deklaraci.

Tomu navrženému se říká "hungary notation" a není to doporučená možnost
Sunucuu
Profil
Ok dobře, děkuji za pomoc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0