Thank you for your feedback Christian. Yeah for the use case of sending mails this makes no sense. It is a very simplified example. I use this method in the following case. Imagine you have a pretty big class. Like 500 or more lines and it is pretty hard to read it. You have many functions that perform different tasks. Now you can use this pattern to split the class in different little classes. Let's call the little classes "actions". Each action you can call now on your own and refactor it out of the big class.
// BigClass.phpclassBigClass{publicfunctionhandle(){// Imagine a 500 line big file and plenty of functions// We have to parse a big XML-File// We have to harmonize the parsed Information// We have to store the values in different locations}}
Thank you for your concern, Christian.
At your first point: I don't know what you mean by that 🤔
And to your second point: I'm not unit testing this class 😁
Thank you for your feedback Christian. Yeah for the use case of sending mails this makes no sense. It is a very simplified example. I use this method in the following case. Imagine you have a pretty big class. Like 500 or more lines and it is pretty hard to read it. You have many functions that perform different tasks. Now you can use this pattern to split the class in different little classes. Let's call the little classes "actions". Each action you can call now on your own and refactor it out of the big class.
We can now refactor it like this.
In my eyes this helps to clean up my big classes. You get following benefits.
I hope this explanation gives you a better understanding.
This is a wrong way in my opinion. You need split data structures too, coupled with methods.
While I understand your case (and I, for sure, have also written such code) I have two main concerns about your example:
You say „a huge class that performs many tasks“. I‘ll just refer to „Single Responsibility Principle“ here: 1 Class -> 1 Purpose/Task
How would you ever write a Unit test for your RefactoredBigClass? There is no way you could ever test your handle() function there.
Thank you for your concern, Christian.
At your first point: I don't know what you mean by that 🤔
And to your second point: I'm not unit testing this class 😁
For the first point, see: scotch.io/bar-talk/s-o-l-i-d-the-f...
For the second point: Well, that's your fault ;)