tmfl Posted March 7, 2011 Share Posted March 7, 2011 Hi, I've always used PHP code in my websites in a procedural manner as I come from a html/css background. Now that I want to do projects with more complexity I'm thinking I need to approach development in a more Object Oriented fashion. My question is more a theoretical one. I'm creating a User class and I'm not sure on what is the best practise for putting my functions etc. and where to call them. My project will have 2 different users (Admin & End User) so is it correct to say that the User class should encapsulate all the functions of both of these users ? By that I mean create/delete/modify user, login & change password/forgotten password functionality rather than having a seperate Login class Should I only call the database functions within these methods of the user class as opposed to calling them on the php page where the form data is posted ? For example, if a user logins in and when the form data is posted I currently open a connection, validate data, run the query. In an OO approach would I have just one User class method thats relevant to a particular page functionality ? Say, in pseudo code, for handling a login request loginRequest.php include User class try { create new user User(); User::login(); } catch Exception() and should my User class look something like this class.User.php include DBase class class User { var name, var email, var password, function validateInput (email, password) { if (!valid input) throw Exception else return true } function login (email, password){ try { database connection validateInput(); sql to see if user exists and login } catch Exception } } Apologies for this being a bit long winded! thanks tmfl Quote Link to comment https://forums.phpfreaks.com/topic/229877-beginning-oo-phpcreate-user-class-query/ Share on other sites More sharing options...
beegro Posted March 7, 2011 Share Posted March 7, 2011 For the most part, I think your OO approach is correct. However, I would probably break the validation of the form data out from the class. In short, handle validation of form data in a PHP page/script and handle argument validation within the class. This will allow you to send appropriate messages back to the browser for missing/mal-formed/incomplete form entries while your classes manage their attributes and arguments as if they come from a script. Quote Link to comment https://forums.phpfreaks.com/topic/229877-beginning-oo-phpcreate-user-class-query/#findComment-1184023 Share on other sites More sharing options...
KevinM1 Posted March 7, 2011 Share Posted March 7, 2011 You also may want to separate out the login functionality as well, depending on what logging in actually entails, and how smart you want your User object to be. A classic scenario is for a Login object, or a full-fledged User Manager object responsible for User CRUD, to return a populated User object. But yes, form validation has nothing to do with a User and should be a separate mechanism. Quote Link to comment https://forums.phpfreaks.com/topic/229877-beginning-oo-phpcreate-user-class-query/#findComment-1184042 Share on other sites More sharing options...
tmfl Posted March 7, 2011 Author Share Posted March 7, 2011 Thanks for the replies. So you're saying there is no real requirement for a validation class ? I should just validate the form variables before I pass to the User object login method ? I'm still a bit confused over what the constructor will do too....if I use this class to create a user it will have maybe 3 or more parameters but when a user logs in it will have only 2..... eg. What should I do when I'm declaring the constructor in this situation ? Many thanks in advance for anyone providing help here.... Quote Link to comment https://forums.phpfreaks.com/topic/229877-beginning-oo-phpcreate-user-class-query/#findComment-1184188 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.