Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

5 PHP constantes om je scripts meer portable te maken

Ondanks dat PHP behoorlijk cross-platform is, kan het soms toch nog lastig zijn om een script te schrijven dat foutloos werkt op zowel Microsoft Windows, als bijvoorbeeld SuSE Linux. Terwijl dit volledig mogelijk is. Je moet paden anders schrijven, newline definities zijn anders, enzovoorts. In dit artikeltje vind je een paar handige constantes die PHP definieert om je te helpen je scripts zo portable mogelijk te maken.

PHP_EOL: I demand a new line!

EOL staat voor End Of Line, definieert de karakters die nodig zijn om een nieuwe regel te maken op het huidige platform. Schrijf je bijvoorbeeld een bestand weg, dan kun je deze mooi gebruiken:

PHP:
  1. <?php
  2. $regel1 = "http://www.scriptorama.nl";
  3. $regel2 = "http://www.phpfreakz.nl/";
  4.  
  5. $fp = fopen('test.txt', 'w');
  6. fputs ( $regel1 . PHP_EOL . $regel2 . PHP_EOL );
  7. fclose($fp);
  8.  
  9. ?>

PHP_SAPI: I'm afraid I can't let you do that, Dave.

Sommige scripts zijn bedoeld om alleen vanaf de commandline te draaien. Met deze constante kun je controleren of dat ook wel echt het geval is:

PHP:
  1. <?php
  2.  
  3. if ( PHP_SAPI != 'cli' )
  4. {
  5.   echo "Dit script kan niet via een webserver gedraaid worden.<br />";
  6.   exit;
  7. }
  8. ?>

De waarde 'cli' komt van de Command Line Interface SAPI.

PHP_OS: Waar ben ik?

Deze constante bevat de naam van het huidige operating system waar PHP op draait. Deze kan o.a. de volgende waarden hebben:

  • Linux
  • WINNT (voor bijvoorbeeld Windows XP)
  • FreeBSD
  • Darwin (voor MacOSX)

Als je nog wat meer informatie wilt hebben, kun je ook de functie php_uname() gebruiken. Je kunt als argument opgeven welke gegevens je precies wilt hebben.

DIRECTORY_SEPARATOR: Hoe kom ik er?

Definieert waarmee een filesystem pad wordt gescheiden op het huidige operating system. Zo zal deze constante op Linux de waarde '/' hebben, en op Microsoft Windows de waarde '\':

PHP:
  1. <?php
  2.  
  3. function createPath()
  4. {
  5.    return '..' . DIRECTORY_SEPARATOR . date('dmY');
  6. }
  7.  
  8. ?>

PHP_VERSION: Passport please

Deze constante bevat het huidige versie nummer van PHP. In combinatie met de functie version_compare() kun je bijvoorbeeld vrij simpel controleren of de huidige versie van PHP wel nieuw genoeg is.

PHP:
  1. <?php
  2.  
  3. if (version_compare(PHP_VERSION, '5.1.0') == -1) {
  4.    echo "Dit script heeft minstens PHP 5.1.0 nodig.";
  5.    exit;
  6. }
  7.  
  8. ?>

Reageer ook!

Leave a comment
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>