[php] Functie uit class global maken

Pagina: 1
Acties:

  • TiG
  • Registratie: Maart 2001
  • Laatst online: 29-06 14:19
Ik heb een class in php. Deze class heet languagepak. Daarin zit een functie genaamd language. Nu wilde ik weten of het mogenlijk is om ervoor te zorgen dat iedere keer als in het script global de functie language aangeroepen wordt dat hij dan automatisch die van de class pakt.

Ik zou dit kunnen doen:
PHP:
1
<?function language($arguments){  static $class = new languagepak;  $return = $class->language($arguments);  return $return;}class languagepak{  function language($arguments)  {    ...  }}?>

Maar dat vind ik eigenlijk niet echt netjes. Ik wilde weten of er php zelf niet al een manier zit om functies zo te aliasen als het ware.

U gaat door voor de retorische vraag...


  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Als je meerdere classes languagepak hebt openstaan, hoe zou je dan door alleen Language() aan te roepen, kunnen aanwijzen voor welke class deze functie moet worden uitgevoerd?

This can no longer be ignored.


  • TiG
  • Registratie: Maart 2001
  • Laatst online: 29-06 14:19
Ik wil dan ook maar 1 instantie van languagepak aliasen. Dus iets in de richting van
$languagepak = new languagepak;
alias("language","$languagepak->language");

U gaat door voor de retorische vraag...


  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Dan snap ik niet waarom je die uiteindelijk functie language dan in die class stopt? Gebruik die class dan gewoon alleen als container voor je variabelen, da's wat mooier lijkt mij.

Anywee, dit doet volgens mij wat je wilt.
PHP:
1
<?class a {  Var $msg = "Hello World";  function b() {    print $this->msg;  }}function c($class) {  $class->b();}$a = new a;c($a);?>

This can no longer be ignored.


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven

Dit kan ook:
code:
1
languagepak::language();

  • TiG
  • Registratie: Maart 2001
  • Laatst online: 29-06 14:19
Nee, ik wil het om 2 redenen.
1: Ik moet $class->language() nogal vaak aanroepen en het werkt dus een stuk sneller als ik gewoon language() kan doen
2: Ik vind het omslachtig om in alle functies die ik aanroep of $class global te maken of $class mee te sturen als argument.

U gaat door voor de retorische vraag...


  • Grum
  • Registratie: Juni 2001
  • Niet online
Dan moet je gewoon geen classes gebruiken :)

Verwijderd

Op dinsdag 14 mei 2002 23:59 schreef Erik Jan het volgende:
Dan snap ik niet waarom je die uiteindelijk functie language dan in die class stopt? Gebruik die class dan gewoon alleen als container voor je variabelen, da's wat mooier lijkt mij.

Anywee, dit doet volgens mij wat je wilt.
PHP:
1
<?class a {  Var $msg = "Hello World";  function b() {    print $this->msg;  }}function c($class) {  $class->b();}$a = new a;c($a);?>
wel een beetje omslachtig.. :P

  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Grum:
Dan moet je gewoon geen classes gebruiken :)
Dat wilde ik nou net zeggen... :)
TiG:
Nee, ik wil het om 2 redenen.
1: Ik moet $class->language() nogal vaak aanroepen en het werkt dus een stuk sneller als ik gewoon language() kan doen
2: Ik vind het omslachtig om in alle functies die ik aanroep of $class global te maken of $class mee te sturen als argument.
Probeer geen PHP purist te lijken en gebruik geen classes. Mik al de variabelen binnen van languagepack gewoon in een array ipv een class. Maak een doodnormale functie language die dat array gewoon als global overneemt en lekker met die variabelen kan klooien.
webskipper:
wel een beetje omslachtig.. :P
LOL :)

This can no longer be ignored.

Pagina: 1