top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

Static methods vs. plain functions in PHP

+1 vote
565 views

I am working on an OOP project, and cannot decide which way to follow when I have to write a simple function.

For example, I want to write a function which generates a random string. In an OOP environtment, it is a matter of course to create a static class and a static method for that. But why? Isn't it more elegant, if I implement such a simple thing as a plain function? Not to mention that a function is more efficient than a class method.

So, in object-oriented programming, what is the best practice to implement such a simple function?

posted Sep 19, 2013 by Sumit Pokharna

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

2 Answers

+1 vote

I think that it would be more elegant if you are already in a OOP to keep the flow and stick to OOP. It just doesn't make sense to me in an environment that uses OOP to have functions laying around.

Personally I like to group similar functionality together in their own objects, this way I can reuse them on different projects, the random string generator is an excellent example of something I usually use in almost all of my projects.

Function calling is usually faster than object calling (depends on how you benchmark it) since there is an overhead to it. There are some who tried to "benchmark" this and had opposite results, It all comes down to how are you going to use that functionality:

http://www.webhostingtalk.com/showthread.php?t=538076
http://www.micro-optimization.com/global-function-vs-static-method

Personally in my projects - specifically if I use a framework, I try to stay away from making standalone functions unless absolutely necessary.

answer Sep 19, 2013 by anonymous
+1 vote

"Best practices" are for academics and people who read Datamation.

You have to look at why OOP exists and then ask yourself if the function you wish to create really needs any of the values that attend OOP. You also have to look at how simple your code is to read and understand.
Based on what you've described, there would appear to be absolutely no value in making it into a class with a static method. In that case, all you would have done is to add an extra level of complexity to your code. If I were a programmer coming in after you to work with your code, I'd ask myself why in the world you did that. And if feasible, I would change it back to a flat function for the sake of simplicity.

Always prefer non-OOP unless you have some compelling reason to make something object-oriented. For example, the interface to a DBMS is something which may involve many many functions. It is definitely something which benefits from OOP code, not flat functions. I've personally found that dates benefit from this same treatment.

answer Sep 19, 2013 by Deepankar Dubey
Similar Questions
0 votes

Do u know about planning or implementing OOP methdology access to array methods in PHP in future. Like show code later:

$a = new Array();
$a->append("hello");
$a->shift();
$p = $a->pop();

$b = Array::fill(fill_char="*", count=20);
$b->pop();
...