Voor mijn website ben ik bezig met een rechtensysteem, waarbij ik een array genereer met rechtendata uit mijn database.

Dit systeem werkt met een Rights-class met o.a de method getRights(). Deze roep ik nu aan in de constructor zodat automatisch de rechten-array geladen wordt bij het instancieren van class met:

<?php
$rights = new Rights(); 
?>


Nu vroeg ik me af of dit een goed idee is, en of het misschien toch beter is om gewoon de getRights() aan te roepen nadat de class geinstancieerd wordt i.p.v. de constructor te gebruiken. Dus:

<?php
$rights = new Rights(); 
$rights->getRights();
?>


Mijn class is (versimpeld) als volgt:

<?php
class Rights{
  private $rights; 

  public function __construct() {
	$this->getRights();
  }


  private function getRights() {
     // maak hier de array met de rechten die je returned
   return $this->rights; 
  }
}
?> 

Iemand een goed advies hierover?
Remco van Bers op 23/02/2016 17:10:44
Het gaat een beetje off-topic, maar waarom zou een User niet zelf mogen weten of het voldoende rechten heeft? $user->isAllowed($requiredRights)

Omdat het niet altijd/enkel van de (huidige) user zelf af hoeft te hangen of iets toegankelijk is.

Daarnaast, hoe zou een implementatie van het bovenstaande eruitzien? Zoiets?
<?php
class User
{
    // ...

    // retourneert rechten die huidige gebruiker heeft
    public function getRights() {
        // ...
    }

    public function isAllowed($requiredRights) {
        return Authorization::isAllowed($this->getRights(), $requiredRights);
    }

    // ...
}
?>

Is dan niet meer dan een (weliswaar handige, maar nog steeds een) shorthand/alias.

[size=xsmall]Toevoeging op 23/02/2016 18:11:53:[/size]

Ward van der Put op 23/02/2016 17:52:42
Dat kan ook, maar dan mis je misschien nog een onderdeel ... een class Rights die definieert hoe een collectie rechten eruit ziet. ;)

Fair enough, daar kun je afspraken over maken (en dat hoeft niet per se in een class te gebeuren).

Reageren