[PHP] Defines

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi

Ik heb een rijtje met rechten als volgt opgesteld.

code:
1
2
3
4
5
6
7
8
9
    //  Rights
    DEFINE('ADMIN',                     '001');    
    DEFINE('ADMIN.USER',                '001.001');  
    DEFINE('ADMIN.USER.INSERT',         '001.001.001');
    DEFINE('ADMIN.USER.UPDATE',         '001.001.002');
    DEFINE('ADMIN.RIGHT',               '001.002');
    DEFINE('ADMIN.RIGHT.INSERT',        '001.002.001');  
    DEFINE('ADMIN.RIGHT.UPDATE',        '001.002.002');
    DEFINE('ADMIN.RIGHTUSER',           '001.003');


Wanneer ik nu een print geef van bijvoorbeeld ADMIN.RIGHTUSER geeft hij als resultaat 001RIGHTUSER?

Het lijk wel hij die ADMIN al eerder omzet en vervolgens die waarde geeft.

Dit zou zo toch niet mogen werken bij Defines?

Ik snap er eerlijk gezegd niets van ....

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Je kan geen punten gebruiken in de naam van een define. Je kan alleen [a-z0-9_] gebruiken, dus dezelfde tekens als in een variabele naam. Als je de volgende code boven je code zet, zou je foutmeldingen moeten zien:

PHP:
1
2
error_reporting(E_ALL);
ini_set('display_errors','on');

[ Voor 35% gewijzigd door Skaah op 07-12-2007 14:08 ]


Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

En als je de most specific bovenaan zet gaat het wel goed?

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

Verwijderd

Een punt dient in PHP om 2 delen samen te voegen. Dus je punten vervangen door iets anders zou moeten lukken.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Je kunt geen punten gebruiken in namen van constanten. Jij doet nu dit;

PHP:
1
print(ADMIN.RIGHTUSER);

Je concatenate je ADMIN-constante met de RIGHTUSER-constante. Die 2de bestaat neit, en dus wordt hij naar een string geconvert. Met error_reporting(E_STRICT) aan had je dit ook direct kunnen zien gebeuren.

//Edit
Notice: Use of undefined constant RIGHTUSER - assumed 'RIGHTUSER'
Zet je error_reporting op zijn minst op E_ALL tijdens ontwikkeling.

[ Voor 19% gewijzigd door frickY op 07-12-2007 14:09 ]


Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 20:37
de . (punt) is ook de concat-operator, oftewel die dingen aan elkaar hangt. Misschien kun je in plaats daarvan de _ (underscore) gebruiken. Of als je écht deze naamgeving wil aanhouden zul je constant() moeten gebruiken.

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.

Pagina: 1