PHP - Sebastian 1:0

April 15th, 2008 von Sebastian

Wie einem die Semantik einer Sprache ein Schnippchen schlagen kann, kann man sich manchmal gar nicht so leicht vorstellen. Dass das ganze aber schneller gehen kann, als man denkt, habe ich heute erfahren müssen:

Wer hätte gedacht, dass  die Bedingung innerhalb der folgenden Schleife doch tatsächlich false zurück gibt:

foreach( $units as $key => $unit ) {
if( $key != "main" ) {
...
}
}

PHP wertet den Index des Array ($key), der ein Integer ist, als boolschen Wert. Dieser, evaluiert mit ungleich “main” (”main” ergibt true, wird zu bool gecastet, da ja 0 auch ein boolscher Wert ist *hust*) ergibt beim ersten Array-Index (nämlich 0) false, denn 0, als boolscher Wert (false) interpretiert, ungleich true lässt die Bedingung nicht zutreffen..

Argh.. unglaublich. Manchmal wäre eine etwas genauere Typisierung doch schön, soviele bequeme Vorteile das in PHP auch sonst hat..

del.icio.us Slashdot Digg Facebook Technorati Google StumbleUpon Windows Live Yahoo Ask Mister Wong Germany Blogmarks

Geschrieben in Codechaos | Keine Kommentare »

getUserIDByUserID()

März 18th, 2008 von Sebastian

Nicht ganz so lautet die Methode, die Nils heute in unserem Intranet entdeckt hat, aber so könnte sie lauten. Was macht sie?

Nun, sie gibt die UserID eines User-Objektes zurück. Man denkt sich ja eigentlich, dass dieses User-Objekt bereits die ID enthalten sollte, richtig? Ja, und das tut es auch.

Interessant ist vor allem die Möglichkeit, dass Parameter 1 mixed ist und auch (siehe Doku) eine UserID akzeptiert. Man gibt also eine UserID herein, um die dazugehörige UserID zu bekommen..

    /**
     * will extract the user id of a given user or
     * return the current user if no user was given
     *
     * @param mixed $user UserID or ngUser Object or null
     * @return int the userID. 0 if nothing found or error
     * @access public
     */
    function getUserIDByUser( $user = null) {
      $_returnValue = 0; 

      if( is_null( $user ) ) {
        $user =& ngSession::getCurrentUser();
      }
      if( is_object( $user ) ) {
        $_returnValue = intval( $user->getVar( 'id' ) );
      } else {
        $_returnValue = intval( $user );
      }
      return $_returnValue;
    }

del.icio.us Slashdot Digg Facebook Technorati Google StumbleUpon Windows Live Yahoo Ask Mister Wong Germany Blogmarks

Geschrieben in Codechaos | Keine Kommentare »