robsonvleite / datalayer

The data layer is a persistent abstraction component of your database that PDO (O data layer é um componente para abstração de persistência no seu banco de dados que usa PDO com prepared statements)
https://www.upinside.com.br
MIT License
144 stars 53 forks source link

DataLayer crashando sempre que crio um objeto model #43

Closed DaviMendesDev closed 3 years ago

DaviMendesDev commented 3 years ago

Bom dia, eu estava tentando usar o DataLayer, porém percebi que o DataLayer crasha a aplicação sempre que eu crio uma instância do DataLayer (no caso um object Users)

use Source\Models\Users;
...
$user = new Users(); // => crasha a aplicação

dump($user); // => não roda

Fiz um debug em Connect::getError(); e de fato não há erros na conexão, só crasha quando eu crio um objeto model. Sei que não há erros na conexão por eu também fiz um dump(Connect::getInstance()) que retornou uma variável de conexão estável

classe Users:

# Source/Models/User.php
namespace Source\Models;

use CoffeeCode\DataLayer\DataLayer;

class Users extends DataLayer {
    public string $first_name;
    public string $last_name;
    public string $email;
    public string $password;

    public function __construct ($user_data = null) {
        parent::__construct("users", self::getAttributes());

        if ($user_data) {
            $this->first_name = $user_data->first_name;
            $this->last_name = $user_data->last_name;
            $this->email = $user_data->email;
            $this->password = $user_data->password;
        }
    }

    public static function getAttributes (): array {
        return [
            "first_name",
            "last_name",
            "email",
            "password",
        ];
    }
}
DaviMendesDev commented 3 years ago

Perdão, já resolvi o problema, a classe Users estava nomeada no plural, sendo que o nome do arquivo era User.php, acredito que era um problema no namespace mesmo, não sei, não conheço muito de PHP, achei que o que importava mesmo era somente o namespace e não a nomeação do arquivo, enfim, apenas substitui:

Users => User

e funcionou '-.-