Best way in PHP to ensure in a class that all the class functions are called only if a given condition is true -
i have class in each function of class have check exact same condition before executing code:
class myobject { public function function1($argument) { if($condition === true) { //do } } public function function2($argument) { if($condition === true) { //do } } public function function3($argument) { if($condition === true) { //do } } public function function4($argument) { if($condition === true) { //do } } }
we can see function1, function2, function3, function4 execute code if $condition === true
.
if in future add function called function5, have duplicate condition.
so question is, best way ensure before call function in class, condition true, , if condition false, not call function.
my method use magic function __call , make functions of class private:
class myobject { public function __call($method,$args) { if($condition === true) { call_user_func_array(array($this,$method),$args); } return; } private function function1($argument) { //do } private function function2($argument) { //do } private function function3($argument) { //do } private function function4($argument) { //do } }
it seems work. however, i'm unsure work , clever way of doing it.
its pretty normal first way. but, maybe whole design of class wrong? if every single 1 function needs exact same condition true maybe set/check in constructor , treat there? why recheck condition multiple times? can change between function calls?
something used way:
try{ $myclass = new myclass(); // if no permissions throw exception }catch(exception $e){ //do return false; } //we know user permission go on $myclass->function1(); $myclass->function2();
the second way works lose of power of phpdoc , editors autocomplete code. way have know name of every method.
Comments
Post a Comment