PHP: vzájemné volání metod z více class

Libor

PHP: vzájemné volání metod z více class
« kdy: 27. 03. 2014, 12:15:25 »
Ahoj, chtěl jsem se zeptat na jednu věc ohledně class. Když budu mít dvě class s názvem Drevo a Plast a potřebuji zavolat z class Drevo nějakou metodu v class Plast a taky opačně z class Plast zavolat nějakou metodu z class Drevo, jak to mám udělat? Poradí nkdo? Díky

Kód: [Vybrat]
class Drevo {
   ...
   ...
   public function DataFromPlast() {
      return ???;
   }
   ...
   ...
}

class Plast {
   ...
   ...
   public function DataFromDrevo() {
      return ???;
   }
   ...
   ...
}
« Poslední změna: 27. 03. 2014, 15:43:15 od Petr Krčmář »


JmJ

  • ****
  • 333
    • Zobrazit profil
Re:PHP - Jak volat metody vzájemně z více class?
« Odpověď #1 kdy: 27. 03. 2014, 12:33:34 »
Trochu zalezi na tom, jestli chces volat ze Dreva nejakou metodu Plastu, ktera nepracuje s daty nesenymi v nejake instanci Plastu. Treba kdybys mel v Plastu metodu RekniJakeJeDatum, tak to je metoda, ktera nezavisi na konkretni instanci Plastu, takze bys ji mohl deklarovat jako statickou a pak bys ji proste zavolal. Nevybavim si ted presnou syntax ale neco jako Plast.RekniJakeJeDatum(); .

Pokud bys volal metodu z Plastu, ktera zavisi na datech konkretni instance tridy Plast, pak ve Dreve pri volani te metody, musis mit tuto instanci k dispozici. Napriklad metoda RekniJakyJsiPlast. Bud by Drevo muselo mit vlastnost Plast kusPlastu a pak by metoda DataFromPlast volala kusPlastu.RekniJakyJsiPlast nebo metoda DataFromPlast bude mit parametr Plast nejakyPlast a pak v ni budes volat nejakyPlast.RekniJakyJsiPlast a metodu dataFromPlast budes volat jako nejakeDrevo.DataFromPlast(nejakyPlast).

Hmmm

Re:PHP - Jak volat metody vzájemně z více class?
« Odpověď #2 kdy: 27. 03. 2014, 12:48:17 »
Trochu zalezi na tom, jestli chces volat ze Dreva nejakou metodu Plastu, ktera nepracuje s daty nesenymi v nejake instanci Plastu. Treba kdybys mel v Plastu metodu RekniJakeJeDatum, tak to je metoda, ktera nezavisi na konkretni instanci Plastu, takze bys ji mohl deklarovat jako statickou a pak bys ji proste zavolal. Nevybavim si ted presnou syntax ale neco jako Plast.RekniJakeJeDatum(); .

Pokud bys volal metodu z Plastu, ktera zavisi na datech konkretni instance tridy Plast, pak ve Dreve pri volani te metody, musis mit tuto instanci k dispozici. Napriklad metoda RekniJakyJsiPlast. Bud by Drevo muselo mit vlastnost Plast kusPlastu a pak by metoda DataFromPlast volala kusPlastu.RekniJakyJsiPlast nebo metoda DataFromPlast bude mit parametr Plast nejakyPlast a pak v ni budes volat nejakyPlast.RekniJakyJsiPlast a metodu dataFromPlast budes volat jako nejakeDrevo.DataFromPlast(nejakyPlast).

Suhlasim, len opravim. Ma to byt Plast::RekniJakeJeDatum() v prvom pripade a v druhom pripade $obj->RekniJakyJsiPlast($plast); ak predtym napiseme $obj = new Plast;

Ale tiez je moznost si vytvorit napr. $plast cez $plast = new Plast, toto serializovat a ulozit do session a potom to v nejakej metode triedy Drevo unserializovat a objekt $plast pouzit.

Jozef