kitsunecode/datalayer

数据层是数据库的持久抽象组件,PDO已为其准备了执行常见操作的指令,如注册、读取、编辑和删除数据。

v1.0.2 2021-07-15 04:34 UTC

This package is auto-updated.

Last update: 2024-09-15 11:28:04 UTC


README

数据层是数据库的持久抽象组件,PDO已为其准备了执行常见操作的指令,如注册、读取、编辑和删除数据。

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.

关于KitsuneCode

KitsuneCode是一套小型且优化的PHP组件,用于常见任务。由Enos S. S. Silva和Kitsune团队维护。使用它们,您可以用更少的行执行日常任务,编写更少的代码,并做更多的事情。

KitsuneCode é um conjunto de pequenos e otimizados componentes PHP para tarefas comuns. Mantido por Enos S. S. Silva e a equipe Kitsune. Com eles você executa tarefas rotineiras com poucas linhas, escrevendo menos e fazendo muito mais.

亮点

  • 易于设置(Fácil de configurar)
  • 总CRUD抽象(Asbtração total do CRUD)
  • 创建安全模型(Crie de modelos seguros)
  • Composer ready(Pronto para o composer)
  • PSR-2兼容(Compatível com PSR-2)

安装

数据层可通过Composer获取

"kitsunecode/datalayer": "1.0.*"

或者运行

composer require kitsunecode/datalayer

文档

有关如何使用数据层的详细信息,请参阅组件目录中的示例文件夹

Para mais detalhes sobre como usar o Data Layer, veja a pasta de exemplo com detalhes no diretório do componente

连接

要开始使用数据层,您需要连接到数据库(MariaDB / MySql)。有关更多连接信息,请参阅PHP.net上的PDO连接手册

Para começar a usar o Data Layer precisamos de uma conexão com o seu banco de dados(MariaDB / Mysql). Para ver as conexões possíveis acesse o manual de conexões do PDO em PHP.net

define("DATA_LAYER_CONFIG", [
    "driver" => "mysql",
    "host" => "localhost",
    "port" => "3306",
    "dbname" => "datalayer_example",
    "username" => "root",
    "passwd" => "",
    "options" => [
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8, time_zone = '-03:00'",
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
        PDO::ATTR_CASE => PDO::CASE_NATURAL
    ]
]);

您的模型

数据层基于MVC结构,采用Layer Super Type和Active Record设计模式。要使用它,需要创建您的表模型并继承数据层。

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.

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);

//looping users
foreach ($users as $user) {
    echo $user->first_name;
}

//find one user by condition
$user = $model->find("first_name = :name", "name=Enos")->fetch();
echo $user->first_name;

//find one user by two conditions
$user = $model->find("first_name = :name AND last_name = :last", "name=Enos&last=Santana")->fetch();
echo $user->first_name . " " . $user->first_last;

findById

<?php
use Example\Models\User;

$model = new User();
$user = $model->findById(2);
echo $user->first_name;

安全参数

请参阅find_example.php示例和模型类

Consulte exemplo find_example.php e classes modelo

$params = http_build_query(["name" => "MasterKitsune & Associated"]);
$company = (new Company())->find("name = :name", $params);
var_dump($company, $company->fetch());

连接方法

请参阅find_example.php示例和模型类

Consulte exemplo find_example.php e classes modelo

$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 = "Enos";
$user->last_name = "Santana";
$userId = $user->save();

保存更新

<?php
use Example\Models\User;
$user = (new User())->findById(2);

$user->first_name = "Enos";
$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();
}

自定义数据方法

class User{
    //...

    public function fullName(): string 
    {
        return "{$this->first_name} {$this->last_name}";
    }
    
    public function document(): string
    {
        return "Restrict";
    }
}

echo $this->full_name; //Enos Santana
echo $this->document; //Restrict

贡献

有关详细信息,请参阅CONTRIBUTING

支持

安全性:如果您发现任何安全问题,请通过devenos@icloud.com发送电子邮件,而不是使用问题跟踪器。

Se você descobrir algum problema relacionado à segurança, envie um e-mail para devenos@icloud.com em vez de usar o rastreador de problemas.

感谢

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。