Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]
Publicado por facundo (185 intervenciones) el 06/09/2017 19:23:53
Hola gente como andan? Estoy buscando la opinion de algun profesional o programador php con mucha experiencia.
Necesito saber cual de las dos siguientes maneras es mejor para programar mas profesionalmente y porque?
El código que les voy a pasar se trata de un simple registro de usuarios, se los voy a pasar solo con el username para que no se haga tan largo. Aclaro que puede tener algun error de tipeado ya que lo modifique para postear aca.
En la primera trabajo mas con las propiedades directo, y en la segunda trabajo mas con un objeto, sus getters y setters, basicamente... Si lo pasan a su php storm se les va a hacer mas facil para verlo
Primer manera de hacerlo:
register.php
UserValidator.php
User.php
Bien, esa seria la primer manera de hacer el registro de usuario (aunque claro, pregunto esto, porque despues la logica la aplicaria tambien para añadir productos, etc etc)
Y la segunda forma de hacerlo seria asi:
register.php
User.php
UserValidator.php
UserCollection.php
Espero que entiendan a que me refiero y puedan responderme,cualquier cosa me preguntan, gracias, saludos!
Necesito saber cual de las dos siguientes maneras es mejor para programar mas profesionalmente y porque?
El código que les voy a pasar se trata de un simple registro de usuarios, se los voy a pasar solo con el username para que no se haga tan largo. Aclaro que puede tener algun error de tipeado ya que lo modifique para postear aca.
En la primera trabajo mas con las propiedades directo, y en la segunda trabajo mas con un objeto, sus getters y setters, basicamente... Si lo pasan a su php storm se les va a hacer mas facil para verlo
Primer manera de hacerlo:
register.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
require_once '../src/User.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
require_once '../validator/userValidator.php';
try{
$user = new userValidator;
$user->validarDatos($_POST);
if (!empty($user->errors)){
foreach($user->errors as $value){
echo '<div style="color: red">' . $value . '</div>';
}
}
$msg = isset($user->msg)?$user->msg:'';
echo '<div style="color: limegreen; font-size: 25px">' . $msg .'</div>';
}catch (PDOException $e){?>
<div style="color: red">
<?php echo $e->getMessage(); ?>
</div>
<?php
}
}
UserValidator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class userValidator
{
private $username;
public $errors = [];
public function validarDatos(array $data)
{
$this->username = $data['username'];
if (empty($this->username)) {
$this->errors[] = 'Debe introducir un nombre de usuario<br>';
} elseif (strlen($this->username) < 5 || strlen($this->username) > 16) {
$this->errors[] = 'El usuario debe tener entre 5 y 16 caracteres<br>';
}
if (empty($this->errors)){
$this->validarUsuario($this->username);
}
}
private function validarUsuario($username,$email)
{
$conn = get_connection();
$sql1 = "SELECT username FROM users WHERE username =:usu";
$stmt1 = $conn->prepare($sql1);
$stmt1->bindParam(':usu',$username);
$stmt1->execute();
if ($stmt1->rowCount() > 0){
throw new PDOException('El usuario ya esta en uso');
}
if (empty($this->errors)){
$user = new User;
$user->setUsername($this->username);
$user->addUser();
}
}
User.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class User
{
private $username;
public function setUsername($username)
{
$this->username = $username;
return $this;
}
private function addUser()
{
$sql = "INSERT INTO users (`username`) VALUES (?)";
$conn = get_connection();
$stmt = $conn->prepare($sql);
$stmt->bindvalue(1,$this->username);
try {
if ($stmt->execute()) {
$this->msg = 'Usuario registrado';
}
}catch(PDOException $e){
throw new PDOException('Lo sentimos, hubo un error al intentar crear el usuario, por favor intentelo devuelta');
}
}
Bien, esa seria la primer manera de hacer el registro de usuario (aunque claro, pregunto esto, porque despues la logica la aplicaria tambien para añadir productos, etc etc)
Y la segunda forma de hacerlo seria asi:
register.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
require_once '../validator/userValidator.php';
try{
$user = new User;
$user->setUsername($_POST['username']);
$userValidator = new userValidator($user);
$userValidator->validarDatos();
if (!empty($userValidator->errors)){
foreach($userValidator->errors as $value){
echo '<div style="color: red">' . $value . '</div>';
}
}
$msg = isset($userValidator->msg)?$userValidator->msg:'';
echo '<div style="color: limegreen; font-size: 25px">' . $msg .'</div>';
}catch (PDOException $e){?>
<div style="color: red">
<?php echo $e->getMessage(); ?>
</div>
<?php
}
}
User.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class User
{
private $username;
public function getUsername()
{
return $this->username;
}
public function setUsername($username)
{
$this->username = $username;
return $this;
}
}
UserValidator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require_once '../helpers.php';
require_once '../src/User.php';
require_once '../src/UserCollection.php';
class UserValidator
{
private $user;
public $errors;
public $msg;
public function __construct(User $user)
{
$this->user = $user;
}
public function validarDatos()
{
if (empty($this->user->getUsername())) {
$this->errors[] = 'Debe introducir un nombre de usuario<br>';
} elseif (strlen($this->user->getUsername()) < 5 || strlen($this->user->getUsername()) > 16) {
$this->errors[] = 'El usuario debe tener entre 5 y 16 caracteres<br>';
}
}
private function validarUsuario($username)
{
$conn = get_connection();
$sql1 = "SELECT username FROM users WHERE username =:usu";
$stmt1 = $conn->prepare($sql1);
$stmt1->bindParam(':usu',$username);
$stmt1->execute();
if ($stmt1->rowCount() > 0){
throw new PDOException('El usuario ya esta en uso');
}
if (empty($this->errors)){
$collect = new UserCollection();
$collect->addUser($this->user);
$this->msg = $collect->getMessage();
}
}
UserCollection.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
require_once '../helpers.php';
class UserCollection
{
public $msg;
public function getMessage()
{
return $this->msg;
}
public function addUser(User $user)
{
$sql = "INSERT INTO users (`username`) VALUES (?)";
$conn = get_connection();
$stmt = $conn->prepare($sql);
try {
if ( $result = $stmt->execute([
$user->getUsername()
])) {
$this->msg = 'Usuario registrado';
}
}catch(PDOException $e){
$this->msg .= 'Lo sentimos, hubo un error al intentar crear el usuario, por favor intentelo devuelta';
}
}
public function deleteUser()
{
}
public function editUser()
{
}
Espero que entiendan a que me refiero y puedan responderme,cualquier cosa me preguntan, gracias, saludos!
Valora esta pregunta
0