standardmäßig als erste option in der switch-Anweisung?
Habe ich getestet und es funktioniert gut, aber es sieht... komisch... zu mir. Sollte ich besorgt sein, dass dies nicht standardisierte form, die gelöscht werden in einer zukünftigen version von PHP, oder es könnte aufhören zu arbeiten? Ich hatte schon immer einen default-Fall als letzten Fall, der nie wie der erste Fall...
switch($kind)
{
default:
//The kind wasn't valid, set it to the default
$kind = 'kind1';
//and fall through:
case 'kind1':
//Do some stuff for kind 1 here
break;
case 'kind2':
//do some stuff for kind2 here
break;
//[...]
case 'kindn':
//do some stuff for kindn here
break;
}
//some more stuff that uses $kind here...
(Falls es nicht offensichtlich ist, was ich versuche zu tun, ist sicherzustellen, $Art gültig ist, daher ist der default: - Fall. Aber die Umstellung führt auch einige Operationen, und dann $Art wird verwendet, wenn der switch als auch. Das ist, warum Standard: fällt durch den ersten Fall, und auch die Sätze $Art)
Vorschläge? Ist das normal/gültige syntax?
- Wollte auch erwähnen-ich bin nicht ein PHP-noob. Ich wollte nur, um andere PHP-Profis " Meinungen
- Ich persönlich bin dies zu tun, weil die Standard-option ist die erste option in einem Formular, wenn Sie nichts auswählen, so wird es leichter sein, um Lesen Sie die Optionen, um... mit der Standard sein. Ich kam gerade um diese Frage, um zu bestätigen, dass es funktionieren würde.
- In der Programmierung, wenn wir die Notwendigkeit, ein problem zu lösen in eine unkonventionelle Art und Weise ist es am besten Praxis, um einen Kommentar über den-Schalter, um zu erklären, warum Sie schrieb es so, wie Sie es Tat.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist die ungewöhnliche Redewendung, verursacht es eine kleine pause, wenn Sie es Lesen, ein moment der "huh?". Es funktioniert, aber die meisten Leute würden wahrscheinlich erwarten, um die default-Fall am Ende:
Falls jemand diese Seite durch google, als ich getan habe:
Ich Frage mich das gleiche wie Josh - so...
Eine Sache ist, die standards, die ich denke, wir sollten alle versuchen, härter, um zu halten, aber eine andere Sache ist hacking (in: nutzen-Sie-jede-Möglichkeit irgendwie Weg).
Während er ist hässlich/komisch/nicht normal - es IST möglich und IMHO nützlich sein könnte, in einigen seltenen Fällen...
Folgendes:
Wenn
$color = "greenish";
wird der code druckenwährend, wenn
$color = "green";
oder anderen definierten Fällen, wird es nur die Farbe gedruckt werden.Er weiß es nicht das beste Beispiel, aber you get the point 😉
Hoffe, es hilft jemandem.
Dies ist, wie ich es vermutlich tun... es ist einfach auf das Auge und hält die Funktionalität.
default:
macht PHP ignoriert den rest der Anweisung, aber das funktioniert wirklich Leute!Sieht es seltsam aus dem gleichen Grund, dass
würde seltsam Aussehen, wenn Sie gültig waren. Wenn allein aus diesem Grund würde ich es vermeiden.
Darüber hinaus wissen Sie, dass jedes mal Sie zeigen den code, der zu jemanden, den du gehst zu haben, um zu erklären, dass die Inbetriebnahme der
default
erste Fall beabsichtigt war; dies ist in der Regel ein Zeichen, dass es keine gute Idee ist.wtf?
Würd ich persönlich lieber zu tun
Gängige Praxis ist, definieren Sie die Standard-option als Letzte option. Aber ich sehe nichts falsch mit Ihrer Lösung (wenn es keine vordefinierten schema in Ihrem Unternehmen, wie Sie das layout Ihres Codes)
Art machte mir Stich auf den ersten, aber das nur, weil wir nicht verwenden, um die Dinge zu sehen, dass Weg.
Ich würde vorschlagen, dass Sie dieses Dokument hoch, da einige nennen könnte diese "tricky" - code. Ein noob oder einem zukünftigen Betreuer könnte kommen zusammen und verschieben Sie es nach unten, wo Sie mehr sind komfortabel mit ihm und brechen den Nebeneffekt, dass ist, hat sich an der Spitze.
Dies kann sehr nützlich für die Ablaufsteuerung, insbesondere wenn Sie nicht brechen zwischen den Fällen.
Beispiel:
Könnte man hinzufügen, in einem zusätzlichen 'wenn', oder ein clever 'oder' zu machen
$step
standardmäßig'step1'
bevor Sie starten Sie den Schalter, aber das ist nur zusätzlicher code, verringern die Lesbarkeit.Andere Antworten geben gute Beispiele, nur, um der Klarheit Willen...
Fall (einschließlich Verzug) nicht zu stoppen die Ausführung am Ende, es sei denn, Sie beinhalten eine Pause. Zwar wechseln ist oft im Vergleich zu einer Sequenz von if-elseif-elseif-usw., allerdings ist es nicht ganz so.
Kurze version: SWITCH/CASE " - nur wirkt wie IF/ELSEIF/ELSE wenn Sie gehören Pausen nach jedem Fall. SWITCH/CASE ist mehr wie eine Reihe von "wenn" - Aussagen, wo jeder hat die gleiche variable überprüfen, mit einem anderen Wert, es wird überprüft.
Lange version:, Ohne eine Pause, jeder Fall ist ein "start here"und die Unterschiede in vielerlei Hinsicht, machen es näher zu SPRINGEN, ohne die Nachteile. Technisch gesehen, wenn Sie wirklich, wirklich wollte (Lesen, waren eine masochistische Programmierer, der wollte wirklich die Herausforderung, sich), könnten Sie schreiben fast alle prozedurale Programme mit nur einem externen array ist, wird eine for-Schleife und eine switch-verschachtelten Innenseite.
Ernsthaft, warum würden Sie wollen, dies zu tun, verwirrt meinen Geist, aber es ist wirklich zeigt, wie weit switch/case kann abweichen if/elseif-Muster, so dass es hier für Sie für die Akademische Gründe (aber tun Sie es nicht!)...
Den Weg dieser code würde ausgeführt werden (nachdem Sie etwas einzurichten, für die Erfassung und Einstellung Wahl) wäre es anfangen würde, mit
So... können Sie die Verwendung von Befehlszeilenoptionen zu reflektieren, zurück zu den Tagen von Grund auf...
aber wenn Sie das tun, und ich habe zum Debuggen des Codes später, nachdem Sie schrieb es alle so...
Kann Linus Torvalds Gnade auf die Seele.