Autor Zpráva
dehtak
Profil
zdravim nejde definovat tridu funkci define

notrmalne to je takhle
$trida = new Trida();  
, ale ja bych chtel pouzit define , abych nemusel pouzivat global

define ("TRIDA", new Trida());


To je asi blbost co ?

Nebo jestli to nejde nejak jinak abych nemusel pouzivat global .

Protoze kdyz mam nakou funkci
treba:
 function funkce (){
global $trida;  // tady musim pouzit ten global 
}
tiso
Profil
dehtak
function funkce ($trida){
   //a tu $trida normalne pouzivam
}
dehtak
Profil
function funkce ($trida){“ jo to je taky moznost , ale dejme tomu ze tech trid mamk vic , a do tech zavorek potrebuju davat jiny veci nez zrovna tridy. Abych v tom nemnel gulas.
tiso
Profil
dehtak - tak si rozmysli či to ideš programovať objektovo alebo procedurálne, nemiešaj jedno a druhé...
dehtak
Profil
to je snad jedno jak to pisu ,ja se jen zeptal a ty mi hned nadavas .
AM_
Profil
dehtak
Lze to řešit přes statický člen, např.
class myClass {
  static public $instance;
  public function echoahoj(){
    echo "ahoj";
  }
  ...
}
myClass::$instance = new myClass();
function bagr(){
  myClass::$instance->echoahoj();
}

Jak ale vidíš, je to mnohem větší hokej, než používat global definici na začátku každé funkce, kde třídu použiješ. Pomocí DEFINE se definují konstanty, a aby třída byla konstantou, to už je na mě trochu moc :)
tiso
Profil
dehtak - nadávam? Ja?
Ide o to že miešaš rôzne postupy programovania, a tak z toho vznikne guláš.
AM_
Profil
tiso
Já bych ani v míchání objektového a procedurálního programování takový problém neviděl, ne všechno je nutné cpát do objektů a nevím, proč by z toho musel vznikat guláš.
tiso
Profil
AM_ - ide skôr o to, že vymýšľa...

dehtak - je jeden spôsob - serializovať objekt:
...
define('NEJAKY_OBJEKT', serialize($nejaky_objekt));

function funkce (){
  $nejaky_objekt=unserialize(NEJAKY_OBJEKT);
}


Ale nedoporučujem to používať, je to hrozné a pomalé riešenie.

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