tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
349
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Bevor das Projekt an den Start geht, hab ich:
    PHP-Code:
    error_reporting (E_ALL E_STRICT);
    ini_set ('display_errors' 1); 
    was natürlich zur Folge hat, dass ich verschiedene Meldungen bekomme:
    - Notice: Undefined variable
    - Notice: Undefined index

    Dies ist zwar nicht schlimm denke ich, weil die Variablen oder die Indizes eben an diesen Stellen noch nicht definiert sind.
    Ich bin mir aber nicht sicher, ob man die Variablen oder die Indizes auf jeden Fall definieren muß/sollte, oder ob dies zur Laufzeit genügt.

    Was meint Ihr?
     

  2. #2
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Es muss ja einen Grund geben warum die Variablen an der Stelle noch nicht vorhanden sind. Eventuell hängt es damit zusammen das sie erst nach dem Abschicken der Seite mit Werten belegt werden.

    Dann würde ich den Zugriff auch davon abhängig machen und sie durch eine IF-Anweisung "ausklammern".
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #3
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Zitat Zitat von tombe Beitrag anzeigen
    Es muss ja einen Grund geben warum die Variablen an der Stelle noch nicht vorhanden sind. Eventuell hängt es damit zusammen das sie erst nach dem Abschicken der Seite mit Werten belegt werden.

    Dann würde ich den Zugriff auch davon abhängig machen und sie durch eine IF-Anweisung "ausklammern".
    Natürlich hat das einen Grund, eben noch nicht definiert.
    Beispiel:
    PHP-Code:
    <?PHP
    // Abfrage ob gesendet
    if (!isset($_POST['senden']))
     
    $adminmeldung 'nicht gesendet!';
    // Ausgabe - noch nicht gesendet
    if (isset($adminmeldung// ZWINGEND?
     
    echo $adminmeldung;
    ?>
    Die Frage lautete:
    Sollte man zwingend entweder die Variable definieren oder prüfen ob sie existiert, oder ist es unerheblich wenn (nur in der Programmierphase) die Meldung:
    --- Notice: Undefined variable: adminmeldung ---
    erscheint.
    Geändert von Registrierer (06.02.12 um 11:53 Uhr)
     

  4. #4
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Dann mache ich das jetzt auch mal so.

    Die Antwort lautete:

    Dann würde ich den Zugriff auch davon abhängig machen und sie durch eine IF-Anweisung "ausklammern".
    Im Prinzip spielt es wohl keine Rolle wenn es nur eine Warnung ist. Aber es zeigt trotzdem das nicht sauber programmiert wurde.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  5. #5
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Zitat Zitat von tombe Beitrag anzeigen
    Im Prinzip spielt es wohl keine Rolle wenn es nur eine Warnung ist. Aber es zeigt trotzdem das nicht sauber programmiert wurde.
    Also ist es nur eine Stilfrage?
     

  6. #6
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Im Grunde schon, aber sauber ist es nicht.

    Wozu Variablen prüfen wenn sicher ist das sie an dieser Stelle oder zu diesem Zeitpunkt nicht vorhanden/gültig sind?

    Wenn es aber, wie du schreibst, nur in der "Programmierphase" ist und du noch am Ablauf was änderst, dann würde ich an deiner Stelle vielleicht nur ein "@" vor die Variablen setzten um die Meldungen zu unterdrücken.
    Geändert von tombe (06.02.12 um 12:16 Uhr) Grund: Link ans @ angehängt
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  7. #7
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Sollte man zwingend entweder die Variable definieren oder prüfen ob sie existiert, oder ist es unerheblich wenn (nur in der Programmierphase) die Meldung [...]
    Meiner Meinung nach sollte man - egal in welcher Phase der Projektentwicklung man ist - immer sauber programmieren!
    Denn willst du es später wieder ändern?

    Es ist wirklich mühsam, wenn man in einer der späteren Phasen der Projektentwicklung viel Code refactoring betreiben muss. Klar sowas gibt es immer, aber ob man am Anfang durchgehend sauber programmiert hat, spiegelt sich hier wider.

    Also ist es nur eine Stilfrage?
    Hierbei muss ich tome widersprechen, es ist keine Stilfrage, es ist eine Frage, ob man ein paar Zeichen mehr oder nicht tippen möchte.

    In PHP 6 soll es übrigens dann ein ifsetor geben:
    PHP-Code:
    <?php

    // From http://www.php.net/~derick/meeting-notes.html#ifsetor-as-replacement-for-foo-isset-foo-foo-something-else

    // If $_GET['foo'] is set, then its value will be assigned to $foo,
    // otherwise 42 will be assigned to $foo.
    $foo ifsetor($_GET['foo'], 42);
    ?>
    Spätestens dann kann ich keinen Menschen mehr verstehen, der dies nicht macht

    Wo wir beim Error Control Operator '@' sind: dieser wirkt sich sehr schlecht auf die Performance aus!

    Bis zu ~40% langsamer bei 100.000 Durchgängen: http://codepad.org/4NWKZD3D
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  8. #8
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Zitat Zitat von ComFreek Beitrag anzeigen
    Meiner Meinung nach sollte man - egal in welcher Phase der Projektentwicklung man ist - immer sauber programmieren!
    So sehe ich das mittlerweile auch.

    Da ich jetzt natürlich mehr oder weniger amüsiert, den in der Vergangenheit geschriebenen Quellcode auch kritischer betrachte, kam ich auf diese Frage und ob sich daraus eventuelle Nachteile ergeben, die ich nicht kenne.
     

  9. #9
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Mein Saft:

    Bei dem Beispiel oben würde ich $adminmeldung vor initialisieren und immer vom Negativ-Fall ausgehen.

    Also z.B. so:

    Code php:
    1
    2
    3
    4
    5
    6
    7
    
    <?PHP
    $adminmeldung = 'nicht gesendet!';
     
    // Abfrage ob gesendet
    if (isset($_POST['senden']))
      $adminmeldung = "gesendet";
    ?>

    Damit wird es nicht nur übersichtlicher, man ist auch davor gefeit, das ein spezielles Verhalten implementiert werden muss.

    Geh immer vom Negativfall aus und prüfe ob es positiv werden könnte, sprich ob alle Fälle für das positive Verhalten gegeben sind.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  10. #10
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Eigentlich sollte jeder mal eine Zeit lang in C geschrieben haben – da lernt man sich unsauberes Programmieren ab, weil die Meldungen nicht nur doof aus sehen, sondern auch dafür sorgen, dass das ganze Skript nicht läuft. Man sollte da nur mal probieren, eine Variable nicht zu definieren ..
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

Ähnliche Themen

  1. Notice: Undefined variable site
    Von Kalito im Forum PHP
    Antworten: 8
    Letzter Beitrag: 05.08.11, 13:24
  2. Antworten: 4
    Letzter Beitrag: 24.06.10, 11:28
  3. Antworten: 4
    Letzter Beitrag: 03.10.08, 01:18
  4. Notice: Use of undefined constant
    Von tuFrogs im Forum PHP
    Antworten: 3
    Letzter Beitrag: 05.09.07, 15:37
  5. Antworten: 12
    Letzter Beitrag: 14.10.05, 17:54