I’m working on a humble website with my mediocre, self-taught PHP skills, and the current interface structure is like this:
<?php
if (A) {
$output = someFunc(A);
} else if (B) {
$output = anotherFunc(B);
} else if (C) {
$output = yetAnotherFunc(C);
} else {
$output = 'default stuff';
}
?>
<html template top half>
<?php echo $output; ?>
</html template bottom half>
This worked ok at first, and seemed pretty well organized, but the functionality required has grown by a factor of 10 and it’s rapidly turning into an unmaintainable, embarrassing mess and I don’t know how to get out of it.
I feel that the functions being called for each situation are fairly well-written and focused, but am at a loss as to how to handle the middle-step between the user and the functions that creates the layout and handles the return.
I have a feeling that MVC is one solution? But I’m having a hard time grasping how to go from here to there…
I apologize for any headaches or unpleasant memories the above code may have prompted. Thank you for your time.
You seem to have started the way a lot of people do, a big if and/or case statement that continues to grow. All those “if” checks can take time. MVC is definitely a great way to go, but there are so many ways to implement it. I would recommend also looking to the Front Controller design pattern, which is commonly used with MVC.
One way to change how you are doing things is to switch to a defined list of “actions” using an associative array. And change your functions into includes. Then you can have multiple functions, variables and other processing code.
Then your “index” file is just a routing tool, which is pretty much the Front Controller concept.