Ich bin peinlich.PHP Wenn Bedingungen
Ich habe drei Funktionen zu überprüfen, was die aktuellen angemeldeten Benutzer ist:
public function isAuthor(User $user)
{
return $user->getId() === $this->getDestination();
}
public function isSupervisor(User $user)
{
return $user->getId() === $this->getFirstApprover();
}
public function isSecondApprover(User $user)
{
return $user->getId() === $this->getSecondApprover();
}
Und dann will ich einen Zustand in meinen Aktionen hinzufügen zu überprüfen, ob der Benutzer eine der oben genannten drei erwähnt. Wenn er keiner von ihnen ist, sollte der Zugang verweigert werden. Ein Benutzer kann manchmal mehr als einer von ihnen sein, aber meistens nur einer der drei.
Ich war zuerst denken an so etwas, aber natürlich kann es nicht
arbeitenif (!$object->isAuthor($this->getUser()) || !$object->isSupervisor($this->getUser()) || !$object->isSecondApprover($this->getUser())) {
throw new AccessDeniedException();
}
Was ist der beste Weg, wenn ein Benutzer eine von ihnen ist zu prüfen sein wird? Soll ich eine ganz neue Funktion erstellen?
Sollte ich so etwas wie dieses:
if (!$object->isAuthor($this->getUser())) {
throw new AccessDeniedException();
} elseif (!$object->isSupervisor($this->getUser())) {
throw new AccessDeniedException();
}
Kann ich bitte ein paar Gedanken und Anregungen von anderen haben? Weil ich jetzt wirklich verwirrt bin. Noch ein Neuling hier
Verwenden Sie '&&' anstelle von '||' in Ihrer ersten if Bedingung Versuch – jitendrapurohit
* "aber offensichtlich kann es nicht funktionieren" * - Warum nicht? Sie haben nur Ihre boolesche Logik durcheinandergebracht. Du willst 'ist nicht X UND ist nicht Y UND ist nicht Z', mit anderen Worten *" ist keiner von diesen "*. Momentan drücken Sie * aus "wenn einer von ihnen falsch ist" * ... – deceze