PHP: Überprüfen Sie, ob eine ganze Zahl in einem bestimmten Intervall ist oder nicht

8

Ich arbeite gerade an einem Erfolgssystem für ein kleines Online-Spiel. Die Leistungseinheit hat grundsätzlich 4 Attribute:

  • ID
  • earnedBy
  • earnedOn
  • Fortschritt

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)

    
MrR 01.04.2013, 10:24
quelle

4 Antworten

3

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%     
Gerry 01.04.2013, 10:50
quelle
4

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%

Ссылка

    
tereško 01.04.2013 23:13
quelle
1

Sie können die Einschränkung Range verwenden:

%Vor%

Validierung in Symfony wird von einer separaten Ebene gehandhabt, daher sollten Sie nicht tun Sie es in Setter.

    
Elnur Abdurrakhimov 01.04.2013 10:50
quelle
0

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.

    
Alex Shesterov 01.04.2013 10:46
quelle

Tags und Links