Ankündigung

Einklappen
Keine Ankündigung bisher.

isset() liefert true allerdings bin ich nicht in der Lage die Variable aus

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • isset() liefert true allerdings bin ich nicht in der Lage die Variable aus

    Hier mein Code:
    PHP-Code:
    <?php
    $js_files 
    = array();
    $js_index 0;
    $css_files = array();
    $css_index 0;

    function 
    add($type$content) {
        if(
    $type == "javascript" && $content != "" && preg_match("/.js$/"$content))
        { 
    // Works, tested
            
    if(file_exists($content)) {
                
    $js_files[$js_index] = $content;
                
    $js_index += 1;
                return 
    true;
            } else {
                
    $error .= "Die Datei \"".$content."\" existiert nicht.<br>";
                return 
    false;
            }
        }
        elseif(
    $type == "stylesheet" && $content != "" && preg_match("/.css$/"$content))
        { 
    // Works, tested
            
    if(file_exists($content)) {
                
    $css_files[$css_index] = $content;
                
    $css_index += 1;
                return 
    true;
            } else {
                
    $error .= "Die Datei \"".$content."\" existiert nicht.<br>";
                return 
    false;
            }
        } else {
            
    $error .= "In der Funktion \"add()\" ist ein Fehler aufgetreten.<br>";
            return 
    false;
        }
    }

    function 
    head_javascript() {
        
    $output NULL;
        if(
    is_array($css_files)) {
            foreach (
    $js_files as $output) {
                echo 
    "<script type=\"text/javascript\" src=\"".$output."\"></script><br>";
            }
            return 
    true;
        } else {
            return 
    false;
        }
    }

    function 
    head_stylesheet() {
        
    $output NULL;
        if(
    is_array($css_files)) {
            foreach (
    $css_files as $output) {
                echo 
    "<link rel=\"stylesheet\" type=\"text/css\" href=\"".$output."\"><br>";
            }
            return 
    true;
        } else {
            return 
    false;
        }

    }

    function 
    report_errors() {
        if(isset(
    $error)){
            echo
    ":(";
        } else {
            echo
    ":)";
        }
        echo 
    $error;
    }
    ?>
    Bei isset($error) liefert er false. Wieso?
    Habe alles so eingestellt, dass ich bei javascript und css einen "Datei existiert nicht" fehler erzeuge.

  • #2
    Lesen:
    http://php.net/manual/en/language.variables.scope.php

    Du musst $error schon als Parameter an deine Funktionen mitübergeben bzw. auch "freilassen", also per return zurückliefern. In deinem Fall wäre wohl eine Klasse, in der du $error als Property anlegst und deine Funktionen als Methoden deklarierst die beste Lösung. Von der Verwendung von "global" solltest du Abstand nehmen, auch wenn es erstmal als einfachste Lösung erscheint.

    Kommentar


    • #3
      Gültigkeitsbereich.

      http://php.net/manual/de/language.variables.scope.php

      Ich sag nur:
      PHP-Code:
      global 
      Die 4 Variablen am Anfang des Codes sehen deine Funktionen übrigens auch nicht.

      Kommentar


      • #4
        Außerdem ist das zählen des Array Index in dienem Fall nicht notwendig weil

        PHP-Code:
        $js_array[] = $content
        Das neue Element mit dem nächsten Index an das Array pappt.

        Kommentar


        • #5
          EDIT: Gelöst, musste in jeder funktion einmal global $error, u.s.w.; schreiben

          Kommentar

          Lädt...
          X