davidbadura/orangedb

此包已被废弃,不再维护。未建议替代包。

只读文件系统数据库 | 对象文件映射

1.0-alpha11 2019-11-15 18:53 UTC

README

OrangeDB 是一个关于将主数据从 yaml/json 高性能转换为对象的库。

Build Status Scrutinizer Code Quality Code Coverage

安装

您可以通过 composer 轻松安装此包

composer require 'davidbadura/orangedb'

示例

模型

<?php

use DavidBadura\OrangeDb\Annotation as OD;

/**
 * @OD\Document("character")
 */
class Character {
    
    /**
     * @OD\Type("string")
     */
    private $name;
    
    /**
     * @OD\Type("integer")
     */
    private $age;
    
    /**
     * @OD\ReferenceMany("Character")
     */
    private $children;
    
    public function getName(): string 
    {
        return $this->name;
    }
    
    public function getAge(): int 
    {
        return $this->age;
    }
    
    public function getChildren(): array 
    {
        return $this->children;
    }
}

数据

# /var/cache/orangedb/character/sarah.yaml

name: Sarah Connor
age: 32
children: ['john']

# /var/cache/orangedb/character/john.yaml

name: John Connor
age: 8
children: []

用法

<?php

use DavidBadura\OrangeDb\DocumentManager;
use DavidBadura\OrangeDb\Adapter\YamlAdapter;

$manager = new DocumentManager(new YamlAdapter(__DIR__.'/data'), __DIR__.'/var/cache/orangedb');

$character = $manager->find(Character::class, 'sarah');

echo $character->getName(); // Sarah Connor
echo $character->getAge(); // 32

echo count($character->getChildren()); // 1
echo $character->getChildren()[0]->getName(); //John Connor