Dennis: Doppeltes Array in Arraydefinition im Funktionskopf

Beitrag lesen

Hi Sven,

public function extend_sql($sql, $limit=NULL) {

if (is_null($limit)) {
      $lgrnd = $this->_conf['select_limit_grnd'];
      $lceil = $this->_conf['select_limit_ceil'];
    } elseif (is_array($limit)) {
      list($lgrnd,$lceil) = $limit;
    } else {
      throw new Exception('Parameter Error for Limit: Must be an array');
    }
    // ...
  }

  
Das kannst du in PHP 5 dank [Type-Hinting](http://de3.php.net/manual/en/language.oop5.typehinting.php) sogar noch vereinfachen:  
  
~~~php
public function extend_sql($sql, array $limit = null) {  
  if (null == $limit) {  
    $lgrnd = $this->_conf['select_limit_grnd'];  
    $lceil = $this->_conf['select_limit_ceil'];  
  }  
  else {  
    list ($lgrnd, $lceil) = $limit;  
  }  
  // ...  
}

Durch die Verwendung von == statt is_null() habe ich direkt noch ein mögliches Problem in deinem obigen Code beseitigt. Dein Code reagiert nämlich nicht auf ein leeres Array, wodurch eventuell sowohl $lgrnd und $lceil NULL sein könnten, was vielleicht nicht dem entspricht, was man erwartet hätte. Weil ein leeres Array aber auch == NULL ist, wird dieser Fall bei mir direkt abgefangen.

Viele Grüße,
  ~ Dennis.