anpera.net
https://anpera.dyndns.org/phpbb3/

Quotieren
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=4784
Seite 1 von 1

Autor:  Patzue [ Mo 02 Feb, 2009 16:44 ]
Betreff des Beitrags:  Quotieren

Hi!

Mir ist jetzt grad kein besserer Titel eingefallen^^

Öftersmal wird erwähnt, dass man doch lieber z.b.

PHP:
$session['user']['gold']


schreiben soll anstatt

PHP:
$session[user][gold]


und was mit jetzt schon ein paar mal aufgefallen ist.. in den Standartconfigs sind kaum solche Sachen quotiert.


Weil widerum sind ja manche quotiert

[auszug aus original academy.php]

PHP:
if ($session['user']['drunkenness'] > 0) // too drunk to learn


Und nun zu meiner eigentlcihen Frage^^


Sollte ich jede Datei überarbeiten und die sachen alle quotieren oder lieber lassen?

Autor:  Liath [ Mo 02 Feb, 2009 16:46 ]
Betreff des Beitrags:  Re: Quotieren

also ich änder das immer mit wenn ich ne datei eh am bearbeiten bin und das seh...
wofür das nu genau is kann ich dir auch nicht genau sagen, aber wenns sicherer/besser ist warum nicht :)

Autor:  Patzue [ Mo 02 Feb, 2009 16:48 ]
Betreff des Beitrags:  Re: Quotieren

ja aber mir ist aufgefallen, als ich ein mod installiert habe, dass da drin ein teil quotiert waren und ein teil widerum nicht^^

Autor:  Drazaar [ Mo 02 Feb, 2009 17:33 ]
Betreff des Beitrags:  Re: Quotieren

$session['user'] ist ein Array. http://de2.php.net/array

Der Array-Key ist entweder eine Zahl (eigentlich int = integer http://www.dynamic-webpages.de/php/language.types.integer.php) oder eine Zeichenkette (= string http://de2.php.net/strings)
Zwar ist 'user' nicht der Array-Key (das ist das, was danach kommt, also gold in $session['user']['gold']), aber es sollte/muss sich trotzdem um einen String handeln.

Strings werden immer in quotes (") oder singlequotes (') geschrieben.
Wird dies nicht getan, geht der Interpreter davon aus, dass es sich um eine Konstante (http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Konstanten) handelt.
Die Konstante user oder was auch immer ist jedoch sicherlich nicht gesetzt.

Du kannst das ganze ja mal überprüfen, wenn du z.B. das an den Anfang deiner common.php setzt:

PHP:
define('user', 'blubb');


Die ' (In Arrayschlüsseln werden üblicherweise singlequotes benutzt) sollten also hinzugefügt werden.


MfG
Draz


€: Achja: Es sieht nicht nur blöd aus, es ist auch wirklich FALSCH, wenn die ' fehlen!!

€²: Eliwood hat dazu mal etwas ganz Hilfreiches und Nettes geschrieben. Ich missbrauche mal dein Forum als Quelle dafür Wasili^^
http://forum.basi-net.org/viewtopic.php ... 0df0d78c28

Autor:  Patzue [ Mo 02 Feb, 2009 19:23 ]
Betreff des Beitrags:  Re: Quotieren

ok danke.. aber bei variabeln weg lassen nicht? Oder müsste ich es dann nur nochmals neu definieren? Weil wenn ich ne Variabel quotiere meckert logd rum.. :D


Edit: steht ja in dem Post weiter unten.. Vielen dank für die Hilfe:)

Autor:  Auric [ Mo 02 Feb, 2009 21:27 ]
Betreff des Beitrags:  Re: Quotieren

Nur um Wömöglicher Verwirrung vor zu beugen:
$this->bbcode_second_pass_code('', '
$array = array('a' => 1, 'b' => 2, '"a"'=>'Das X');
$feld = "a";
echo $array[a]; // liefert 1, ist aber nicht gut, wirft eine Warnung
define('a','b');
echo $array[a]; // liefert 2, da a jetzt als Konstante angesehen wird - ist so auch richtig, aber es empfihlt sich zur Übersicht Konstanten immer groß zu schreiben
echo $array[$feld]; // liefert 1 und ist sauber
echo $array["$feld"]; // liefert 1 und wirft keine Warnung da PHP Variablen in doublequotes immer Einsetzt, doch Achtung:
echo $array['$feld']; // liefert nichts, da im array nach dem Schlüssel '$feld' gesucht wird, nicht nach dessen Inhalt 'a' als Schlüssel!
// Um an das letzte Feld des Arrays ("Das X") zu kommen wird es schon schwerer:
echo $array['"' . $feld . '"']; /* oder */ echo $array["\"$feld\""];
')

Das mag zwar immer noch etwas verwirrend sein, aber wenn man sich ein paar Grundsätze verinnerlicht, kann man richtig hässlich zu findende Fehler vermeiden:
1.) Wenn man Arrayschlüssel als String angibt, immer Quotes vervenden (eigentlich egal ob einzel, oder doppel)
2.) Konstanten, speziell wenn sie als Arrayschlschlüssel verwendet werden, immer groß schreiben
3.) Singequotes werden nicht mehr weiter verarbeitet! Wenn da eine Variable oder eine Escape-Sequenz wie \" reingeschrieben wird, dann bleibt die auch so. Doublequotes werden hingegen interpretiert!
4.) Unklarheiten bei Arrayschlüsseln möglichst vermeiden, also nicht so etwas wie: $arr = array(1 => 'a', '1' => 'b', '"1"' => 'c');

Und ansonsten... den Code immer schon Kommentieren/Dokumentieren!

Auric

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/