I’m in a phase of migrating to 100% OO php and I end up with lots of questions like these. So excuse me if you find it stupid, I’m just trying to make my OO programming practices good in the start so that I don’t have to fix them later.
Is it OK to do this?
private function _some_funct($args) {
// Some code here....
if ($something) return;
//Rest of code
}
Basically, there are 2 questions here.
-
Is it OK to use return with no value after it? I use it a LOT and haven’t encoutered any drawbacks, but never saw it in somebody else’s code. I only saw return false.
-
Is stopping functions this way OK generally or should I rethink my program’s structure?
Example of using this would be CMS I’m making.
public function _init_engines() {
$this->_session_engine = $this->_dep['SessionEngine'];
$this->_login_engine = $this->_dep['LoginEngine'];
if ($this->_dep['User'] == false) return;
$this->_security_engine = $this->_dep['SecurityEngine'];
//Other engines go here.......
}
So I let system start session and setup session vars, then check if user is logged in. If user isn’t logged in LoginEngine takes care of that and loads ‘Login’ module. Once Login module is loaded, I don’t want other engines to be instantiated since they are not needed. I could have used die or exit but that would stop whole script from executing. Like this, My script finishes executing, and other things that aren’t engines, like benchmarks and some other stuff still get executed which is just what I want. Again, should I reconsider my logic here or is this way OK in your opinion?
returnwith no value is OK if:@return void(if no result value needed in the function) or something like@return sometype|nullwheresometypeisstring,int, etc.isset()before using the returned value – this can lead to bugs if people using your code (or yourself) forget to check it.returnwith no value is NOT OK if:issetbecause it is harder to forget – exception is a “loud” way to say that an error occured.And please, don’t ever use
die()orexit()to “handle” errors – it is a very bad practice to show technical details of errors to users.As for your
_init_engines()method – it is really hard to say if it is right or wrong without knowing the rest.If you are interested in good examples of OOP in PHP, I would suggest looking at Symfony.