O data layer é um componente para abstração de persistência no seu banco de dados que usa PDO com prepared statements para executar rotinas comuns como cadastrar, ler, editar e remover dados.
CoffeeCode é um conjunto de pequenos e otimizados componentes PHP para tarefas comuns. Mantido por Robson V. Leite e a equipe UpInside. Com eles você executa tarefas rotineiras com poucas linhas, escrevendo menos e fazendo muito mais.
Data Layer is available via Composer:
"coffeecode/datalayer": "2.0.*"
or run
composer require coffeecode/datalayer
Para mais detalhes sobre como usar o Data Layer, veja a pasta de exemplo com detalhes no diretório do componente
Para começar a usar o Data Layer precisamos de uma conexão com o seu banco de dados. Para ver as conexões possíveis acesse o manual de conexões do PDO em PHP.net
const DATA_LAYER_CONFIG = [
"driver" => "mysql",
"host" => "localhost",
"port" => "3306",
"dbname" => "datalayer_example",
"username" => "root",
"passwd" => "",
"options" => [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_CASE => PDO::CASE_NATURAL
]
];
O Data Layer é baseado em uma estrutura MVC com os padrões de projeto Layer Super Type e Active Record. Logo para consumir é necessário criar o modelo de sua tabela e herdar o Data Layer.
<?php
class User extends DataLayer
{
/**
* User constructor.
*/
public function __construct()
{
//string "TABLE_NAME", array ["REQUIRED_FIELD_1", "REQUIRED_FIELD_2"], string "PRIMARY_KEY", bool "TIMESTAMPS"
parent::__construct("users", ["first_name", "last_name"]);
}
}
<?php
use Example\Models\User;
$model = new User();
//find all users
$users = $model->find()->fetch(true);
//find all users limit 2
$users = $model->find()->limit(2)->fetch(true);
//find all users limit 2 offset 2
$users = $model->find()->limit(2)->offset(2)->fetch(true);
//find all users limit 2 offset 2 order by field ASC
$users = $model->find()->limit(2)->offset(2)->order("first_name ASC")->fetch(true);
// find all users with in operator
$users = $model->find()->in("id", [1, 2, 3])->fetch(true);
//looping users
foreach ($users as $user) {
echo $user->first_name;
}
//find one user by condition
$user = $model->find("first_name = :name", "name=Robson")->fetch();
echo $user->first_name;
//find one user by two conditions
$user = $model->find("first_name = :name AND last_name = :last", "name=Robson&last=Leite")->fetch();
echo $user->first_name . " " . $user->first_last;
//find one user by condition and with in operator
$user = $model->find("first_name = :name", "name=Robson")->in("last_name",["Menezes", "Sampaio"])->fetch(true);
foreach ($users as $user) {
echo $user->first_name . " " . $user->first_last;
}
<?php
use Example\Models\User;
$model = new User();
$user = $model->findById(2);
echo $user->first_name;
Consulte exemplo find_example.php e classes modelo
<?php
$params = http_build_query(["name" => "UpInside & Associated"]);
$company = (new Company())->find("name = :name", $params);
var_dump($company, $company->fetch());
Consulte exemplo find_example.php e classes modelo
<?php
$addresses = new Address();
$address = $addresses->findById(22);
//get user data to this->user->[all data]
$address->user();
var_dump($address);
<?php
use Example\Models\User;
$model = new User();
$count = $model->find()->count();
<?php
use Example\Models\User;
$user = new User();
$user->first_name = "Robson";
$user->last_name = "Leite";
$userId = $user->save();
<?php
use Example\Models\User;
$user = (new User())->findById(2);
$user->first_name = "Robson";
$userId = $user->save();
<?php
use Example\Models\User;
$user = (new User())->findById(2);
$user->destroy();
<?php
use Example\Models\User;
$user = (new User())->findById(2);
if($user->fail()){
echo $user->fail()->getMessage();
}
<?php
class User{
public function fullName(): string
{
return "{$this->first_name} {$this->last_name}";
}
public function document(): string
{
return "Restrict";
}
}
echo $this->full_name; //Robson V. Leite
echo $this->document; //Restrict
Please see CONTRIBUTING for details.
Se você descobrir algum problema relacionado à segurança, envie um e-mail para cursos@upinside.com.br em vez de usar o rastreador de problemas.
Thank you
The MIT License (MIT). Please see License File for more information.