underpin/berlindb-extension
Composer 安装命令:
composer require underpin/berlindb-extension
包简介
BerlinDB Implementation for Underpin
README 文档
README
BerlinDB Integration for the Underpin WordPress framework.
A few key benefits:
- Tables are registered through a
Database_Modelclass. This class provides useful context that makes working with BerlinDB a little easier helps keep your code DRY. - All tables are stored in a registry. This allows you to interact with all tables at one time. Need to uninstall everything? You can do that with a single method, instead of manually looping through tables.
- All CRUD actions happen through database model instead of creating
Queryinstances everywhere.
Installation
Using Composer
composer require underpin/berlindb-extension
Manually
This plugin uses a built-in autoloader, so as long as BerlinDB is required before this extension, it should work as-expected.
require_once(__DIR__ . '/underpin-berlin-db/underpin-berlin-db.php');
Setup
- Install BerlinDB
- Install Underpin. See Underpin Docs
- Create BerlinDB classes.
- Register new database models as-needed.
Example
If you currently have all BerlinDB classes built, you can reference them directly like-so. This will create a new database
model called example, which can be referenced with underpin()->berlin_db()->get('example').
underpin()->berlin_db()->add( 'example', [ 'table' => 'Namespace\To\Berlin_DB\Table', 'schema' => 'Namespace\To\Berlin_DB\Schema', 'query' => 'Namespace\To\Berlin_DB\Query', 'name' => 'Human Readable Table Name', 'description' => 'Description of the purpose of this table', 'sanitize_callback' => function( $key, $value ){ // Function to sanitize fields before saving. } ] );
Alternatively, you can extend Database_Model and reference the extended class directly, like so:
underpin()->berlin_db()->add('database-model-key','Namespace\To\Class');
Working With the Model
Once registered, you can access any of the classes inside the model using the various helper methods.
// Run a query using the specified model underpin()->berlin_db()->get('example')->query([/*...*/]); // Get table object underpin()->berlin_db()->get('example')->table(); // Get schema underpin()->berlin_db()->get('example')->schema();
Creating, Updating, and Deleting
The model includes a handful of helper functions to make it a little easier to update data.
// Automatically sanitize, and then create/update a record. // If the provided arguments include an ID, it will update that record. // Otherwise, it will simply create a new record. $id = underpin()->berlin_db()->get('example')->save( [/*...*/] ); // Delete a record $deleted = underpin()->berlin_db()->get('example')->delete( $id );
Table Setup
// Install all tables underpin()->berlin_db()->install(); // Reset all tables underpin()->berlin_db()->reset(); // Delete all tables underpin()->berlin_db()->uninstall();
Meta Tables
If a database model also has a meta table, it is possible to instruct the model to make that table accessible in the
model. To-do this, you simply have to use the Database_Model_With_Meta_Instance when registering your model.
// Meta Table underpin()->berlin_db()->add( 'example-meta-table', [ 'table' => 'Namespace\To\Berlin_DB\Table', 'schema' => 'Namespace\To\Berlin_DB\Schema', 'query' => 'Namespace\To\Berlin_DB\Query', 'name' => 'Human Readable Table Name', 'description' => 'Description of the purpose of this table', 'sanitize_callback' => function( $key, $value ){ // Function to sanitize fields before saving. } ] ); // Table underpin()->berlin_db()->add( 'example', [ 'class' => 'Underpin_BerlinDB\Factories\Database_Model_With_Meta_Instance', 'args' => [ 'table' => 'Namespace\To\Berlin_DB\Table', 'schema' => 'Namespace\To\Berlin_DB\Schema', 'query' => 'Namespace\To\Berlin_DB\Query', 'name' => 'Human Readable Table Name', 'description' => 'Description of the purpose of this table', 'sanitize_callback' => function( $key, $value ){ // Function to sanitize fields before saving. }, 'get_meta_table_callback' => function(){ return underpin()->berlin_db()->get('example-meta-table'); } ] ] );
Alternatively, you can extend Database_Model, use the With_Meta trait, and then reference the extended class directly,
like so:
underpin()->berlin_db()->add('database-model-key','Namespace\To\Class\Using\With_Meta\Trait');
With this setup, you now have access to a few other methods from within the example model's context.
//add_meta underpin()->berlin_db()->get('example')->add_meta(/*...*/); //update_meta underpin()->berlin_db()->get('example')->update_meta(/*...*/); //delete_meta underpin()->berlin_db()->get('example')->delete_meta(/*...*/); //get_meta underpin()->berlin_db()->get('example')->get_meta(/*...*/);
underpin/berlindb-extension 适用场景与选型建议
underpin/berlindb-extension 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 49 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 05 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 underpin/berlindb-extension 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 underpin/berlindb-extension 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 49
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-2.0-or-later
- 更新时间: 2021-05-03