KingCrunchs kleine Welt

Gedanken über PHP und was mich sonst bewegt…

Zend_Loader und “Return-Includes”

| Keine Kommentare

Vorweg in eigener Sache: Ich habe zwar schon einen Beitrag über die neue Autoloader-Komponente vom Zend-Framework, allerdings scheint noch Bedarf zu sein, wie ich im Forum erkannte. Deshalb habe ich (diesmal als Seite) nochmal einen separaten Artikel über die ganzen Zend_Loader-Familie verfasst, der bei Bedarf auch noch korrigiert und angepasst wird.

Mit (von mir selbst liebevoll getauft) “Return-Includes” sind PHP-Dateien gemeint, die selbst einen Rückgabewert haben. DASPRiD — mittlerweile auch Bastler im Zend-Framework-Haus — hat in seinem Blog dazu einen Artikel verfasst, wie sich diese Technik schnell und einfach für abhängigkeitslose Konfigurationsdateien. Er nennt es zwar anders, aber für mich existiert auch schon länger der Vorteil, dass dabei keine externen Bibliotheken benötigt werden, bzw sie sind benutzbar, während es die Klassen der Bibliothek (noch) nicht sind.

Vor einer Sache möchte ich aber noch Warnen. array_merge_recursive() überschreibt niemals Werte, sondern fasst sie (bei gleichem Schlüssel) nur zusammen. Dies kann zu merkwürdigen und schwer verfolgbaren Fehlern führen

< ?php
$a = array (
  'config'=>array(
    'db'=>array(
      'dbname'=>'name')));
$b = array (
  'config'=>array(
    'db'=>array(
      'dbname'=>'thisConfigUseAnotherName')));
var_dump (array_merge_recursive($a,$b));
/*
array(1) {
  ["config"]=>
  array(1) {
    ["db"]=>
    array(1) {
      ["dbname"]=>
      array(2) {
        [0]=>
        string(4) "name"
        [1]=>
        string(24) "thisConfigUseAnotherName"
      }
    }
  }
}
*/

Eine PHP-native Funktion, die zwei Arrays rekursiv kombiniert und dabei aber gleichnamige Schlüssel mit skalaren Werten überschreibt, ist mir nicht bekannt, weswegen man kurz selbst tätig werden muss. Oder man schaut in die Kommentare zur Funktion im PHP-Manual.

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.


Bad Behavior has blocked 343 access attempts in the last 7 days.

Page optimized by WP Minify WordPress Plugin