augustpermana/hypervel-meta-generator
Composer 安装命令:
composer require augustpermana/hypervel-meta-generator
包简介
A Hypervel package to generate and manage metadata for models
README 文档
README
Hypervel Meta Generator adalah package powerful yang memungkinkan Anda dengan mudah melampirkan dan mengelola metadata untuk model Eloquent Anda tanpa memodifikasi tabel database utama mereka. Package ini menyediakan sistem key-value yang fleksibel dengan fitur deteksi tipe otomatis, casting, dan perintah artisan yang berguna untuk menyederhanakan instalasi dan maintenance.
🚀 Dibangun untuk Hypervel Framework - Framework PHP high-performance dengan dukungan coroutine native berbasis Swoole.
Daftar Isi
Fitur
✨ Auto Type Detection - Deteksi tipe data otomatis (string, integer, boolean, json, datetime, dll) ✨ Type Casting - Casting otomatis saat retrieve data ✨ Query Scopes - Query builder scopes untuk filter berdasarkan metadata ✨ Artisan Commands - Generate metadata system dan clean orphaned records ✨ Coroutine Safe - Dioptimasi untuk environment Swoole/Hypervel dengan coroutine support ✨ Zero Table Modification - Tidak perlu mengubah tabel database utama
Instalasi
Ada dua cara untuk mengintegrasikan Hypervel Meta Generator ke dalam project Anda:
1. Via Packagist (Coming Soon)
composer require augustpermana/hypervel-meta-generator
Hypervel akan secara otomatis menemukan service provider melalui package discovery.
2. Menggunakan Local Repository
Jika package belum dipublish di Packagist, tambahkan sebagai local repository. Modifikasi composer.json project Anda:
"repositories": [ { "type": "path", "url": "./vendor/augustpermana/hypervel-meta-generator" } ], "require": { "augustpermana/hypervel-meta-generator": "@dev" }
Kemudian jalankan:
composer update augustpermana/hypervel-meta-generator
Penggunaan
Hypervel Meta Generator memungkinkan Anda melampirkan metadata ke model tanpa memodifikasi tabel database asli.
Melampirkan Metadata ke Model
-
Generate Metadata Files:
Jalankan artisan command untuk setup metadata system untuk model yang ada. Contoh untuk model
Product:php artisan make:metadata --model=Product
Saat Anda menjalankan command ini, akan melakukan:
- Membuat Meta Model File: Generate file baru (contoh:
ProductMeta.php) di direktoriapp/Models - Membuat Migration: Generate migration untuk membuat tabel metadata (contoh:
product_meta)
- Membuat Meta Model File: Generate file baru (contoh:
-
Update Model Asli:
Anda harus secara manual update model asli (contoh:
Product.php) untuk menyertakan traitHasMetadata:<?php namespace App\Models; use App\Models\Model; use AugustPermana\HypervelMetaGenerator\Traits\HasMetadata; class Product extends Model { use HasMetadata; // ... model code lainnya }
-
Jalankan Migration:
php artisan migrate
Mengelola Metadata
Setelah setup, Anda dapat menggunakan berbagai method untuk manage metadata:
Set Single Meta
$product = Product::find(1); $product->setMeta('warranty_period', 24); // Auto-detected as integer $product->setMeta('is_featured', true); // Auto-detected as boolean $product->setMeta('specifications', [ // Auto-detected as json 'color' => 'black', 'weight' => '1.5kg' ]);
Get Single Meta
$warrantyPeriod = $product->getMeta('warranty_period'); // Returns: 24 (as integer) $isFeatured = $product->getMeta('is_featured'); // Returns: true (as boolean) $specs = $product->getMeta('specifications'); // Returns: array // Dengan default value $discount = $product->getMeta('discount', 0); // Returns: 0 jika tidak ada
Set Multiple Meta
$product->setManyMeta([ 'brand' => 'Samsung', 'warranty_period' => 24, 'is_featured' => true, 'release_date' => '2025-10-22' ]);
Sync Meta (Replace All)
// Hapus semua metadata yang ada dan ganti dengan yang baru $product->syncMeta([ 'brand' => 'Apple', 'model' => 'iPhone 15', 'price' => 999.99 ]);
Check Meta Exists
if ($product->hasMeta('warranty_period')) { // Metadata exists }
Remove Meta
$product->removeMeta('old_field');
Query dengan Meta Scope
// Cari semua produk yang featured $featuredProducts = Product::whereHasMeta('is_featured', '1')->get(); // Cari semua produk yang punya metadata 'warranty_period' $productsWithWarranty = Product::whereHasMeta('warranty_period')->get();
Artisan Commands
make:metadata
Generate metadata system untuk model yang sudah ada.
php artisan make:metadata --model=Product
Command ini akan:
- Membuat model meta baru (
ProductMeta.php) - Membuat migration untuk tabel metadata
metadata:clean-orphaned
Membersihkan orphaned metadata records (metadata yang parent recordnya sudah dihapus).
php artisan metadata:clean-orphaned --model=Product
⚠️ PERINGATAN: Command ini akan menghapus data dari database. Backup database Anda sebelum menjalankan command ini.
Konfigurasi
Package ini tidak memerlukan konfigurasi khusus. Namun, Anda dapat customize:
Custom Meta Model Location
Secara default, meta model akan dibuat di App\Models. Jika Anda ingin menggunakan lokasi berbeda, override method getMetaModelClass() di model Anda:
protected function getMetaModelClass() { return 'App\\CustomNamespace\\' . class_basename($this) . 'Meta'; }
Supported Data Types
Package ini secara otomatis mendeteksi dan mendukung tipe data berikut:
string- String pendektext- String panjang (> 255 chars)longtext- String sangat panjang (> 65535 chars)integer- Bilangan bulatfloat/double- Bilangan desimaldecimal- Bilangan desimal presisiboolean- True/Falsejson- Array atau Objectdate- Tanggal (Y-m-d)time- Waktu (H:i:s)datetime/timestamp- Tanggal dan waktubinary- Binary data (base64 encoded)
Perbedaan dengan Laravel Version
Package ini adalah adaptasi dari augustpermana/laravel-meta-generator untuk Hypervel Framework dengan perubahan berikut:
| Fitur | Laravel Version | Hypervel Version |
|---|---|---|
| Framework | Laravel 8+ | Hypervel 0.3+ |
| Base Classes | Illuminate\* |
Hypervel\* |
| PHP Version | >= 7.3 | >= 8.2 |
| Coroutine Support | ❌ | ✅ |
| Swoole Extension | Optional | Required |
| Performance | Standard | High (Coroutine-based) |
| Package Discovery | laravel key |
hypervel key |
Performance Tips
1. Eager Loading Metadata
// ❌ N+1 Problem $products = Product::all(); foreach ($products as $product) { $brand = $product->getMeta('brand'); // Query di setiap loop } // ✅ Eager Loading $products = Product::with('meta')->get(); foreach ($products as $product) { $brand = $product->getMeta('brand'); // Tidak ada query tambahan }
2. Batch Operations
// ❌ Multiple Queries $product->setMeta('field1', 'value1'); $product->setMeta('field2', 'value2'); $product->setMeta('field3', 'value3'); // ✅ Single Batch $product->setManyMeta([ 'field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3', ]);
3. Indexing
Tabel metadata secara otomatis memiliki composite index pada (foreign_key, key) untuk query yang lebih cepat.
Requirements
- PHP: >= 8.2
- Hypervel Framework: ^0.3
- Swoole Extension: >= 5.0
- ext-json: *
Contributing
Kontribusi sangat diterima! Silakan buat pull request atau buka issue di repository GitHub.
License
Package ini adalah open-source software yang dilisensikan di bawah MIT license.
Author
Agus Permana
- Email: agus.emailnya@gmail.com
- GitHub: @agus-gian
Credits
Package ini terinspirasi dari kebutuhan untuk mengelola metadata dinamis tanpa mengubah struktur tabel database, dengan optimasi khusus untuk environment Hypervel yang high-performance.
Happy Coding with Hypervel! 🚀
augustpermana/hypervel-meta-generator 适用场景与选型建议
augustpermana/hypervel-meta-generator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 10 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「meta」 「coroutine」 「swoole」 「meta-table」 「meta-generator」 「meta-table-generator」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 augustpermana/hypervel-meta-generator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 augustpermana/hypervel-meta-generator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 augustpermana/hypervel-meta-generator 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Asynchronous coroutines for PHP 7.
Harvest statistics and meta data from an URL or his source code (seo oriented).
Phalcon PHP Meta tags service
A SilverStripe module to optimise the Meta, crawling, indexing, and sharing of your website content (forked from Cyber-Duck/Silverstripe-SEO)
Help to manage meta data on Laravel Eloquent model
A simple, repeatable field type
统计信息
- 总下载量: 2
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 16
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-22