ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
349
349
EMPFEHLEN
-
06.02.12 11:30 #1
- Registriert seit
- Mar 2009
- Beiträge
- 171
Bevor das Projekt an den Start geht, hab ich:
was natürlich zur Folge hat, dass ich verschiedene Meldungen bekomme:PHP-Code:error_reporting (E_ALL | E_STRICT);
ini_set ('display_errors' , 1);
- 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?
-
06.02.12 11:36 #2
- 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.
-
06.02.12 11:51 #3
- Registriert seit
- Mar 2009
- Beiträge
- 171
Natürlich hat das einen Grund, eben noch nicht definiert.
Beispiel:
Die Frage lautete:PHP-Code:<?PHP
// Abfrage ob gesendet
if (!isset($_POST['senden']))
$adminmeldung = 'nicht gesendet!';
// Ausgabe - noch nicht gesendet
if (isset($adminmeldung) // ZWINGEND?
echo $adminmeldung;
?>
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)
-
06.02.12 11:57 #4
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Dann mache ich das jetzt auch mal so.
Die Antwort lautete:
Im Prinzip spielt es wohl keine Rolle wenn es nur eine Warnung ist. Aber es zeigt trotzdem das nicht sauber programmiert wurde.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.
-
06.02.12 12:06 #5
- Registriert seit
- Mar 2009
- Beiträge
- 171
-
06.02.12 12:13 #6
- 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.
-
06.02.12 17:31 #7Meiner Meinung nach sollte man - egal in welcher Phase der Projektentwicklung man ist - immer sauber programmieren!Sollte man zwingend entweder die Variable definieren oder prüfen ob sie existiert, oder ist es unerheblich wenn (nur in der Programmierphase) die Meldung [...]
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.
Hierbei muss ich tome widersprechen, es ist keine Stilfrage, es ist eine Frage, ob man ein paar Zeichen mehr oder nicht tippen möchte.Also ist es nur eine Stilfrage?
In PHP 6 soll es übrigens dann ein ifsetor geben:
Spätestens dann kann ich keinen Menschen mehr verstehen, der dies nicht machtPHP-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);
?>
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/4NWKZD3Dmfg 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 erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
06.02.12 19:25 #8
- Registriert seit
- Mar 2009
- Beiträge
- 171
-
07.02.12 20:47 #9
- 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 ;-)
-
07.02.12 20:53 #10
- 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
-
Notice: Undefined variable site
Von Kalito im Forum PHPAntworten: 8Letzter Beitrag: 05.08.11, 13:24 -
Notice: Undefined variable / Deprecated: Function split() is deprecated / Deprecated
Von drexxi im Forum PHPAntworten: 4Letzter Beitrag: 24.06.10, 11:28 -
Notice: Undefined variable: email in..?
Von fawad im Forum PHPAntworten: 4Letzter Beitrag: 03.10.08, 01:18 -
Notice: Use of undefined constant
Von tuFrogs im Forum PHPAntworten: 3Letzter Beitrag: 05.09.07, 15:37 -
php5 Problem: Notice: Undefined variable: ... in c:\programme\e-novative\WAMP\www
Von Jabba-deHut im Forum PHPAntworten: 12Letzter Beitrag: 14.10.05, 17:54





Zitieren



Login






[PHP][Snippet] Array zu XML konvertieren