[php] soort van defines?

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 20-08 14:20
Ik wil met PHP wat dingen defineren, statische waarden, zoals #define bij C / C++

Is hier ook een optie voor in PHP?

if broken it is, fix it you should


  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09-2025
PHP:
1
2
3
<?php
 $var = 'melp';
?>

:?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22-08 23:00
PHP:
1
define("", "");


:z

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 22-08 17:59

Knutselsmurf

LED's make things better

Ook PHP heeft een functie define

- This line is intentionally left blank -


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-08 19:22
Constantes define je op de volgende manier:
PHP:
1
2
/*define value 3 to FOO*/
define("FOO", 3);


Voor meer info tjek de PHP manual: http://www.php.net/manual/en/function.define.php

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 20-08 14:20
Dank je, maar geld dit ook als ik eerst x.php (van index.html) aanroep die de define doet en ik hem met y.php wil openen die na x.php gesloten is ook door index.html wordt aangeroepen?

[ Voor 93% gewijzigd door elgringo op 30-04-2003 22:03 ]

if broken it is, fix it you should


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 22-08 17:59

Knutselsmurf

LED's make things better

elgringo schreef op 30 April 2003 @ 21:59:
Dank je, maar geld dit ook als ik eerst x.php (van index.html) aanroep die de define doet en ik hem met y.php wil openen die na x.php gesloten is ook door index.html wordt aangeroepen?
Op welke manier wil je dat aanroepen vanuit een .html-bestand uitvoeren dan?

- This line is intentionally left blank -


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22-08 23:00
Een define is global. Het antwoord op je vraag is dus ja. Éénmaal gedefineerd in een draaiend script is het toegankelijk op alle niveau's.

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 20-08 14:20
Knutselsmurf schreef op 30 April 2003 @ 22:08:
[...]

Op welke manier wil je dat aanroepen vanuit een .html-bestand uitvoeren dan?
geen html maar een php bestand..... foutje

Ik bedoel eigenlijk:

i.php maakt gebruikt van verschillende andere php bestanden. Als i.php opgestart wordt wordt er een tweede scherm geopend met y.php. i.php roept (nadat het 2de scherm er is) een functie uit x.php aan die een define doet. Kan y.php (het tweede scherm dus) dan die define lezen?

if broken it is, fix it you should


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22-08 23:00
elgringo schreef op 30 April 2003 @ 22:12:
i.php maakt gebruikt van verschillende andere php bestanden. Als i.php opgestart wordt wordt er een tweede scherm geopend met y.php. i.php roept (nadat het 2de scherm er is) een functie uit x.php aan die een define doet. Kan y.php (het tweede scherm dus) dan die define lezen?
Zoals ik al zei: ja.

  • MikeN
  • Registratie: April 2001
  • Laatst online: 22-08 16:46
elgringo schreef op 30 april 2003 @ 22:12:
[...]
i.php maakt gebruikt van verschillende andere php bestanden. Als i.php opgestart wordt wordt er een tweede scherm geopend met y.php. i.php roept (nadat het 2de scherm er is) een functie uit x.php aan die een define doet. Kan y.php (het tweede scherm dus) dan die define lezen?
Als ik je goed begrijp heb je nu 2 losse pagina's: een i.php en een y.php. Omdat die 2 los van elkaar draaien kunnen ze niet bij elkaars defines en variabelen. Het kan volgens mij dus niet.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22-08 23:00
MikeN schreef op 30 April 2003 @ 22:26:
Als ik je goed begrijp heb je nu 2 losse pagina's: een i.php en een y.php. Omdat die 2 los van elkaar draaien kunnen ze niet bij elkaars defines en variabelen. Het kan volgens mij dus niet.
Jawel.... als ik y.php aanroep via een include vanuit i.php en in y.php staan de defines kan ik die in i.php wél aanspreken.

Je hebt het dus fout.

  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
ddc schreef op 30 april 2003 @ 22:28:
[...]
Jawel.... als ik y.php aanroep via een include vanuit i.php en in y.php staan de defines kan ik die in i.php wél aanspreken.
Via een include wel. Maar de TS heeft het over twee verschillende vensters. En dan heb je het dus over twee verschillende scripts :)
Je hebt het dus fout.
In dat geval heb jij het dus fout ;)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22-08 23:00
eborn schreef op 30 april 2003 @ 22:30:
Via een include wel. Maar de TS heeft het over twee verschillende vensters. En dan heb je het dus over twee verschillende scripts :)
Beter lezen:
elgringo schreef op 30 april 2003 @ 21:59:
Dank je, maar geld dit ook als ik eerst x.php (van index.html) aanroep die de define doet en ik hem met y.php wil openen die na x.php gesloten is ook door index.html wordt aangeroepen?
Zowel i.php en y.php worden aangeroepen vanuit index.html (na elkaar). Dan is het nogsteeds hetzelfde script wat draait (in principe index.html) en is dus alsnog alles toegankelijk.

  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
Beter lezen:
.php maakt gebruikt van verschillende andere php bestanden. Als i.php opgestart wordt wordt er een tweede scherm geopend met y.php. i.php roept (nadat het 2de scherm er is) een functie uit x.php aan die een define doet. Kan y.php (het tweede scherm dus) dan die define lezen?
Of ben ik nou gek (geen retorische vraag) ;)

[ Voor 7% gewijzigd door eborn op 01-05-2003 00:40 ]


Verwijderd

De topicstarter begrijpt gewoon niet goed hoe het precies in elkaar zit met server-side scripts. PHP code wordt volledig op de server uitgevoerd, en de server is helemaal niet bewust van een browser of browservensters of wat dan ook. De client krijgt gewoon een document, meestal HTML, en zijn browser probeert dat weer te geven. Als er in dat document instructies staan om een nieuw venster te openen, dan doet de browser dat. Als er in dat venster een pagina terecht moet komen, dan doet dat nieuwe venster een hele nieuwe request die in principe volledig los staat van het vorige.

Wil je variabelen uit een ander php bestand halen, dan zul je dat moeten includen. Maar vergis je dus niet, er is normaliter helemaal geen sprake van 'als het nieuwe venster geopend is', alle PHP code wordt eerst uitgevoerd, en dán pas gaat het resultaat naar de client.

y.php zal de waarden die in x.php worden gedefinieerd niet kunnen lezen, als je x.php niet include, of op een andere manier dat document parset.

Als je het echt over constanten hebt, dan kun je gerust helemaal aan het begin van y.php óók x.php kunnen includen. Constanten zijn altijd hetzelfde, en anders moet je ze niet als constante definiëren ;)
('configuratie constanten' zijn wellicht een uitzondering, deze wijzigen weleens, maar niet erg frequent)

Bevat x.php niet alleen constanten, maar ook variabelen die veranderen per request, dan zul je iets anders moeten bedenken. Je zou met sessies, cookies, verborgen formulieren, en/of get-variabelen kunnen zorgen dat je te weten kunt komen welke requests bij dezelfde client horen, zodat je wél variabelen per client kunt onthouden. Sessies liggen het meest voor de hand.

Wat er dan zou kunnen gebeuren, is dat script i.php bepaalde sessie-variabelen een waarde geeft (uit x.php, op welke manier dan ook). De client krijgt een pagina voorgeschoteld, de browser krijgt opdracht een nieuw venster te openen met y.php. Dat venster zal dezelfde sessie-id krijgen, waardoor de waarden uit de sessie ook in y.php beschikbaar zullen zijn.

Ik stel voor dat de TS zelf ook eens iets meer gaat lezen, want daar leer je erg veel van.

Ik weet zelf niet zeker of ik nu heb uitgelegd wat de topicstarter ongeveer wil, maar het is aan hem om dat te bepalen natuurlijk. Heel erg helder was het verhaal niet. Kort wel.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Manual vraagje.

Bovendien is het uitleg van Cheatah hierboven uitstekend.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1

Dit topic is gesloten.