return mit "?"

Razorhawk

Webdesigner und MSP
Was bedeutet an sich diese Zeile.
Damit meine ich speziel das fragezeichen hinter der Varaiblen angabe und die Boolean zuweisung!

return $su ? true : !(strpos($dir,'..')!==false);
 
Das sieht mir nach der Kurzform der if - else - Abfrage aus, allerdings mit einem Dreher drin. Denn soweit ich mich erinnern kann muss das heissen

Bedingung ? Wenn erfüllt : Wenn nicht erfüllt
 
ja ich analysiere gerade ein script und diese zeile ist dort drin, aber sie funktioniert.
Wäre gut, wenn ich das mit 100% sicherheit weiß.
 
jup, da is ein dreher drin...

wenn die variable $su besteht, dann gebe true zurück, wenn nicht, führe die abfrage aus... theoretisch. mich wundert's nur, dass die abfrage einfach so da stehen kann...

normalerweise kommt die abfrage vor das "?".

matt
 
Die Abfrage ist doch vor dem Fragezeichen:


return $su ? true : !(strpos($dir,'..')!==false);

Heisst wenn $su true ist, gebe true zurück, wenn $su false ist dann gebe den
Rückgabewert von !(strpos($dir,'..')!==false) zurück.

Wobei dieser Ausdruck:
!(strpos($dir,'..')!==false)

Dann wurde insgesammt etwas extrem schlechter Stil angewandt. Weshalb soll ich geieren und dann auf unidentisch testen.
((strpos($dir,'..')==false)
oder noch kürzer
!(strpos($dir,'..');
sollte wohl gemeint sein.
 
nein per copy & paste hier eingefügt und er muss ja funtionieren, sonst würde ein fehler ausgegeben werden

das heißt also da wurde ein bisschen zusammengefügt und ich könnte das ganze auch so schreiben?

if($su) $su==true else strpos($dir,'..')!==false;
return $su
 
Original geschrieben von Razorhawk
nein per copy & paste hier eingefügt und er muss ja funtionieren, sonst würde ein fehler ausgegeben werden

das heißt also da wurde ein bisschen zusammengefügt und ich könnte das ganze auch so schreiben?

if($su) $su==true else strpos($dir,'..')!==false;
return $su

nein das währe nicht korrekt.
Weil $su niemals den Wert von strpos($dir,'..')!==false annehmen wuerde.

Du kannst es einerseits so schreiben

if($su) $su==true else $su = strpos($dir,'..')!==false;
return $su;

was aber auesserst schlechter Stil waehre da du ja nicht $su den Wert zuweisen willst, sondern nur den Wert des Ausdrucks bei negativen $su zurückgeben willst.
Also besser
if($su)
return true;
else
return strpos($dir,'..')!==false;

Noch noch kuerzer:

if($su) return true;
return strpos($dir,'..')!==false;

Der Operator !== heisst nicht identisch ist demnach noch eine Version restriktiver als nicht gleich.
Wobei mich der Operator in einer Schwachtypisierenden Sprache etwas verwirrt. Da ich noch nie bei PHP den Drang verspuerte auf Identisch zu testen.
Eher auf gleichheit.
 
Was wäre Programmiersprachentechnisch der Unterschied zwischen identisch und gleich?

Also so gesehen wäre für mich in dem Sinne != das gleiche wie !==
 
Meiner persönlichen Interpretation nach wäre

a = a <- identisch

a=1
b=1
a = b <- gleich

?

Aber das ist wahrscheinlich sowas von daneben, dass sich sämtliche Balken biegen ;)
 
Nein

Gleich: Der Wert ist gleichwertig
Identisch: Wert und Typ ist gleich

int a = 3;
long b = 3;
long c = 3;

a==b ist true
a===b ist false
b===c ist true

Da PHP nicht stark typisiert ist das bei PHP relativ selten das auf identisch getestet wird
 
Zurück