In order to better organize my code in a PHP project (a simple CMS) I'm considering moving most of my System functions to an abstract class as static members. Aside from the organizational and syntactical benefit from it, the only other reason would be to store references to datasource objects, etc., as static members also.
Rules are made to be broken when necessary, but I want to solidify my understanding of better (read best) patterns and practices.
I suppose this question is open ended, but I was wondering if anyone had suggestions, or could perhaps suggest some reading material, so I could explore my options and what would be considered 'best practices'.
An example of this in my code would be functions for managing permissions. For any given request, permission checks may be necessary to ensure the requesting user has sufficient privileges for the operation. So functions such as getAllPermissions()
, getGroupPermissions()
, addGroupPermissions()
, etc., are floating around. Should these be encapsulated within a PermissionsManager
class, necessary to instantiate, and if so, where do I stop? Am I on the right track moving them to a pseudo-global space within an abstract class as static methods? Should I just leave the declarations in global scope? Where do appropriate class responsibilities end and 'god-class' takeovers begin? What color socks should I wear?
I just can't seem to wrap my head around this, and it's slowing my productivity. I don't want to idle any longer on modeling, because despite it's obvious benefits, I've certainly destroyed a few trees sketching out object-interaction diagrams. And my wastebasket is full.