kitsunecode / datalayer
数据层是数据库的持久抽象组件,PDO已为其准备了执行常见操作的指令,如注册、读取、编辑和删除数据。
Requires
- php: >=7.2
- ext-pdo: *
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.
感谢
致谢
- Enos S. S. Silva (开发者)
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。