[PHP] Variabelen in een functie

Pagina: 1
Acties:

  • Marcj
  • Registratie: November 2000
  • Laatst online: 10-09 13:43
Ik ben er even helemaal uit. Ik heb in een ander bestand (functions.php) een variabele in het begin aangemaakt. Deze wil ik later gebruiken in één van die functies. Zoals dit:

include.php
PHP:
1
<?$test = "blaat";function TestBlaat(){  if(!$test)    die('$test bestaat niet ;(');  echo $test;}?>

test.php
PHP:
1
<?include('include.php');if(!$test)  die('$test bestaat niet ;(');echo $test . "<br>";TestBlaat();?>

De eerst echo in test.php gaat goed, maar in die functie kent ie geen $blaat meer. Hoe kan dit? En hoe moet ik dit oplossen?
Ik heb het geprobeerd met 'global', maar dat is dacht ik niet echt wat ik zocht (vooral na de reacties op global in de search D2k :P)

Disclaimer: ik heb php.net, search en faq gebruikt, maar ik snap het nog steeds niet

ow ja, zie hier het resultaat

  • MacWebber
  • Registratie: September 2000
  • Niet online
De global is in dit geval toch echt wat je zoekt (voor deze manier van werken). Je maakt een globale variabele aan, om die binnen je functie te kunnen gebruiken moet je even vertellen dat 'ie bestaat.

Dus binnen de functie global $test opnemen en het werkt weer.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Het is toch ook niet al te moeilijk om de functie gewoon aan te roepen met die variabele.
PHP:
1
<?testBlaat($test)?>

De functie moet dan natuurlijk ook worden aangepast.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

PHP:
1
<?function blaat ($test = ''){if (!empty($test)) { echo "test var found: $test"; }}?>

Stop uploading passwords to Github!


  • Marcj
  • Registratie: November 2000
  • Laatst online: 10-09 13:43
Op dinsdag 26 maart 2002 08:58 schreef M4rt1nvW het volgende:
Het is toch ook niet al te moeilijk om de functie gewoon aan te roepen met die variabele.
PHP:
1
<?Blaat($test)?>
Dit is dus vrij lastig, omdat ik functies heb waar ik iets van 20 globale variabelen heb. En om deze allemaal in te vullen, nee dank je. Het moet toch makkelijker kunnen?
Op dinsdag 26 maart 2002 08:56 schreef MacWebber het volgende:
De global is in dit geval toch echt wat je zoekt (voor deze manier van werken). Je maakt een globale variabele aan, om die binnen je functie te kunnen gebruiken moet je even vertellen dat 'ie bestaat.

Dus binnen de functie global $test opnemen en het werkt weer.
Hé het werkt nu wel :? Nou ja, bedankt iig :)
Maar nu moet ik dus binnen alle functies globel $var doen?? Dan krijg ik toch nog een hoop overbodige regels. Kan het niet makkelijker??

Verwijderd

Neeeeeeeeee, help!!!!!

Ok,
Om die variable in de functie te kunnen gebruiken moet je er in de functie "global" voor zetten. Veel mensen vinden dit een "vieze" manier van programeren (ik ook oa.).
Wat je dan beter kan doen is:
PHP:
1
<?$test = "blaat";function TestBlaat($test){    if(!$test)        die('$test bestaat niet ;(');    echo $test;}?>

Zo gaat het wel werken.

De functie moet je dan aanroepen als:
PHP:
1
<?TestBlaat($test);?>

/me hoopt dat dit de laatste is

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
stop ze in array, dan kun je ze in één keer overstralen.

Verwijderd

Op dinsdag 26 maart 2002 09:01 schreef Marcj het volgende:

[..]

Dit is dus vrij lastig, omdat ik functies heb waar ik iets van 20 globale variabelen heb. En om deze allemaal in te vullen, nee dank je. Het moet toch makkelijker kunnen?
[..]
Dan zou ik een object of zo gaan gebruiken.
En dan alle vars die een beetje "bij elkaar" horen groeperen.

bv. $email->naam;
$email->address;
$email->enz.....

Ik hoop dat je begrijpt wat ik bedoel.

Verwijderd

Op dinsdag 26 maart 2002 09:01 schreef Marcj het volgende:

[..]

Dit is dus vrij lastig, omdat ik functies heb waar ik iets van 20 globale variabelen heb. En om deze allemaal in te vullen, nee dank je. Het moet toch makkelijker kunnen?
[..]
alle variablen die je her en der zou willen gebruiken, kun je idd, zoals al gezegd is, in een array douwen, zodat je dan maar per functie 1 global variable hoeft te definieren.
Wat ik ook regelmatig doe (als ik wil dat een functie meer kan, maar toch compatible blijft met de huidige code), is een functie uitbreiden met func_num_args() en func_get_arg([arg]) (zie functie II).

bijv.
PHP:
1
<?// functie Ifunctie Blaat() {   global $test;  echo $test;}// functie IIfunctie Blaat_() {     if (func_num_args() == 1) { // er is 1 argument meegegeven             echo func_get_arg(0); // echo het eerste argument   }  }?>

maar als je per functie zo'n 20 global variables nodig hebt, is de 2e manier wel veel werk :P

  • Marcj
  • Registratie: November 2000
  • Laatst online: 10-09 13:43
Ik ga me wel verdiepen in objects, ik denk dat dat de makkelijkste manier is

Verwijderd

Op dinsdag 26 maart 2002 09:50 schreef Marcj het volgende:
Ik ga me wel verdiepen in objects, ik denk dat dat de makkelijkste manier is
Als je nog niet functions begrijpt lijkt het mij niet zo slim om met classes te gaan beginnen :).

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 26 maart 2002 09:21 schreef DarthRaider het volgende:
Wat ik ook regelmatig doe (als ik wil dat een functie meer kan, maar toch compatible blijft met de huidige code), is een functie uitbreiden met func_num_args() en func_get_arg([arg]) (zie functie II).
Imho kan je dan veel beter een constructie ala:
PHP:
1
<?function blaat($old1, $old2, $old3, $new1=0, $new2=0){}?>

Etc doen, tegen func_num_args kan je in principe dezelfde bezwaren als tegen global opwerpen, dat je namelijk niet in 1 oogopslag kan zien welke vars door die functie worden bewerkt en wat je allemaal mee mag geven.

Zeker met grote projecten is het belangrijk dat alleen aan de naam/params van een fuctie al te zien is wat er zo ongeveer gebeurt en wat ie terug geeft. (Helaas ondersteund php ook dat al niet... (function int blaat(int X, int Y etc))

Verwijderd

Op dinsdag 26 maart 2002 12:06 schreef ACM het volgende:

[..]

Imho kan je dan veel beter een constructie ala:
PHP:
1
<?function blaat($old1, $old2, $old3, $new1=0, $new2=0){}?>

Etc doen, tegen func_num_args kan je in principe dezelfde bezwaren als tegen global opwerpen, dat je namelijk niet in 1 oogopslag kan zien welke vars door die functie worden bewerkt en wat je allemaal mee mag geven.

Zeker met grote projecten is het belangrijk dat alleen aan de naam/params van een fuctie al te zien is wat er zo ongeveer gebeurt en wat ie terug geeft. (Helaas ondersteund php ook dat al niet... (function int blaat(int X, int Y etc))
helemaal mee eens. maar een v/d voordelen (vind ik) van php, is juist dat t omgaan met variables zo vrij is. Voor grote functies is het daarentegen zeer zeker wel aan te bevelen om het te doen zoals jij aangeeft. Ikzelf zet bij de declaratie van functies waar ik func_num_args() gebruik, altijd comments neer, hoe die extra argumenten gebruikt zouden moeten worden. Dus is in die zin, kan men vrij eenvoudig zien wat een functie nodig heeft/doet.

  • Marcj
  • Registratie: November 2000
  • Laatst online: 10-09 13:43
Op dinsdag 26 maart 2002 11:30 schreef Xenith het volgende:

[..]

Als je nog niet functions begrijpt lijkt het mij niet zo slim om met classes te gaan beginnen :).
Ik snap genoeg van classes hoor, en van functies ook wel. Ik gebruik al jaren C++, en daardoor was ik wat verward.
Pagina: 1