Ich arbeite gerade an einem Erfolgssystem für ein kleines Online-Spiel. Die Leistungseinheit hat grundsätzlich 4 Attribute:
Der letzte Wert soll ein Prozentsatz sein, also eine Zahl zwischen 0 und 100. Um sicherzustellen, dass keine Zahlen größer als 100 oder kleiner als 0 in der Datenbank gespeichert werden, sieht meine Setter-Methode wie folgt aus ( Ich verwende Symfony2 / Doctrine ORM):
%Vor% Die wichtige Zeile hier ist max(min($progress, 100), 0)
.
Es funktioniert ganz gut, ich wollte nur fragen, ob es eine andere eingebaute Funktion in PHP gibt, die genau dieses Ding macht, und ob das, was ich tue, okay ist (bezüglich des guten Entwicklungsstils)
Sie sollten in Erwägung ziehen, einige Einschränkungen für Ihre Entität aus der Validierungskomponente von Symfony2 hinzuzufügen.
> %Vor%Der Validator-Dienst wird automatisch aufgerufen, wenn beispielsweise Formulare geprüft werden. Sie können ihn jedoch auch manuell aufrufen, indem Sie den Validator-Dienst beispielsweise in Ihrem Controller abrufen.
%Vor% Seit PHP 5.2 gibt es filter_var()
Funktionen mit beträchtlichen Mengen von Optionen verfügbar.
Einer von ihnen lässt Sie nach einer Nummer in einem Bereich suchen:
%Vor% Sie können die Einschränkung Range
verwenden:
Validierung in Symfony wird von einer separaten Ebene gehandhabt, daher sollten Sie nicht tun Sie es in Setter.
Kurze Antwort ist no , es gibt keine eingebaute Funktion in PHP, die eine Zahl an unteren und oberen Grenzen "abschneidet".
Und es ist wirklich ok, min(max(x, max_value), min_value)
zu schreiben - es ist kurz und lesbar.
Tags und Links attributes php symfony doctrine