0
I’m learning about object-oriented programming in PHP, classes, hierarchies and so on. Reading a few topics right here on stackoverflow I found the solution to my problem with the user control class, but I got a question regarding this.
The class would be:
class UserService
{
protected $_email; // using protected so they can be accessed
protected $_password; // and overidden if necessary
protected $_user; // stores the user data
public function __construct($email, $password)
{
$this->_email = $email;
$this->_password = $password;
}
public function login()
{
$user = $this->_checkCredentials();
if ($user) {
$this->_user = $user; // store it so it can be accessed later
$_SESSION['user_id'] = $user['id'];
return $user['id'];
}
return false;
}
protected function _checkCredentials()
{
/* Faz a rotina para verificar se o usuário está no banco de dados*/
/* e se a senha confere */
/* Se OK retorna os dados do usuário, se não, retorna false */
}
}
I am in doubt on how to use this class if I want to return only the username for example.
To log in the user I understood, would be:
session_start();
include("class.user.php");
$user = new UserService($_POST['email'], $_POST['pass']);
But if I want to return only the name (or some other data) of the user already logged in, without having to pass the parameters "email" and "password" again?
I would have to create a function within the class for me to pass the user ID stored in $_SESSION and the class would return the data, but I would have to instantiate the class using "new" again?
For example, in the class, add:
public function getUserName($uID)
{
/* Verifica se o usuário está logado e busca o nome no DB */
}
And in the main file (considering that the user has already been previously logged in):
session_start();
include("class.user.php");
$user = new UserService();
$userName = $user->getUserName($_SESSION['user_id']);
echo $userName;
That is correct?
EDIT: This class is just a draft of what I intend to do, I understand that it is necessary to correct some excerpts, sanitize the fields, encrypt the password and etc, this is just to demonstrate my doubt.
Right, but when calling the class I need to call the "new" or instantiate the class directly?
– Junior Zancan
If the class is not Static you always have to instantiate with the new. if it is Static you only need to do so Userservice::getUserName(); do not forget that you have to include one in the class at the beginning of the file.
– TutiJapa Wada