simpleserv/webfiles-framework

此包已被废弃,不再维护。作者建议使用webfiles-framework/framework包。

v0.3.0-alpha 2021-07-31 20:53 UTC

README

https://www.webfiles-framework.org/

Join the chat at https://gitter.im/sebastianmonzel/webfiles-framework-php Build status Code Climate Test Coverage

API 文档: http://sebastianmonzel.github.io/webfiles-framework-php-api/
文档: http://sebastianmonzel.github.io/webfiles-framework-php-doc/ (github-repo)
Packagist: https://packagist.org.cn/packages/webfiles-framework/framework

以通用方式访问和描述数据。与远程数据交互。
开发者 & 联系:Sebastian Monzel (mail@sebastianmonzel.de)

webfiles框架是做什么的?

webfiles框架的目的是提供一个轻量级的库,以标准化的方式与数据交互:webfiles。

webfiles框架将数据访问通用于数据库系统、文件系统以及远程站点上的数据访问。通过webfile定义和标准化的API,您可以以相同的方式访问不同的系统。

第一步

  • 将webfiles-framework作为依赖项webfiles-framework/framework添加到您的composer.json
  • 以webfile定义的方式定义您的数据结构
  • 通过数据存储API保存和读取数据库或文件系统中的数据

示例用例

定义您的第一个webfile定义

use webfilesframework\core\datasystem\file\format\MWebfile;

class Contact extends MWebfile
{

    private $m_sFirstname; // attributes has to be in the given scheme - all attributes with "m_" as prefix gets persisted - "s" defines the type of the attribute (string)
    private $m_sLastname;
    private $m_sCity;

    
    public function setFirstname($m_sFirstname)
    {
        $this->m_sFirstname = $m_sFirstname;
    }
    
    public function getFirstname()
    {
        return $this->m_sFirstname;
    }

    public function setLastname($m_sLastname)
    {
        $this->m_sLastname = $m_sLastname;
    }
    
    public function getFirstname()
    {
        return $this->m_sFirstname;
    }

    public function setCity($m_sCity)
    {
        $this->m_sCity = $m_sCity;
    }
    
    public function getCity($m_sCity)
    {
        $this->m_sCity = $m_sCity;
    }

}

在数据存储中存储webfile

通过目录

<?php
use webfilesframework\core\datastore\types\directory\MDirectoryDatastore;
use webfilesframework\core\datasystem\file\system\MDirectory;

$directoryDatastore = new MDirectoryDatastore(new MDirectory("yourDirectoryToStoreWebfiles"));
$contact = new Contact();
$contact->setId(1);
$contact->setFirstname("Sebastian");
$contact->setLastname("Monzel");

$directoryDatastore->storeWebfile($contact);

或通过数据库

<?php
use webfilesframework\core\datastore\types\directory\MDirectoryDatastore;
use webfilesframework\core\datasystem\file\system\MDirectory;

$databaseDatastore = new MDatabaseDatastore(
                          new MDatabaseConnection(
                              "localhost",
                              "yourDatabaseToStoreWebfiles",
                              "tablePrefixInDatabaseForActualDatastore", // will add this string before every created table name 
                              "username",
                              "password"
                              )
                      );
$contact = new Contact();
$contact->setFirstname("Sebastian");
$contact->setLastname("Monzel");

$databaseDatastore->storeWebfile($contact);

从DirectoryDatastore读取

<?php
use webfilesframework\core\datastore\types\directory\MDirectoryDatastore;
use webfilesframework\core\datasystem\file\system\MDirectory;

$directoryDatastore = new MDirectoryDatastore(new MDirectory("yourDirectoryToStoreWebfiles"));
$directoryDatastore->getAllWebfiles();

从DatabaseDatastore(实际上是mysql)读取

<?php
use webfilesframework\core\datastore\types\database\MDatabaseDatastore;
use webfilesframework\core\datasystem\database\MDatabaseConnection;

$databaseDatastore = new MDatabaseDatastore(
    new MDatabaseConnection(
        "localhost",
        "yourDatabaseToStoreWebfiles",
        "tablePrefixInDatabaseForActualDatastore", // will add this string before every created table name 
        "username",
        "password"
        )
);
$databaseDatastore->getAllWebfiles();

在数据存储中通过模板搜索

待办事项

将数据从一个数据存储传输到另一个数据存储

<?php
use webfilesframework\core\datastore\types\directory\MDirectoryDatastore;
use webfilesframework\core\datasystem\file\system\MDirectory;
use webfilesframework\core\datastore\MDatastoreTransfer;

$source = new MDirectoryDatastore(new MDirectory("sourceDir"));
$target = new MDatabaseDatastore(new MDatabaseConnection("localhost","wonderfulDatabasename","mytableprefix","myuser","mypassword"));

$datastoreTransfer = new MDatastoreTransfer($source, $target);
$datastoreTransfer->transfer();

从RemoteDatastore读取

您可以通过http(s)从远程访问数据存储。`MRemoteDatastoreEndpoint`封装数据存储以使其可访问。在另一端,您可以使用`MRemoteDatastore`来访问封装的数据存储。

服务器端提供数据存储的访问

<?php
use webfilesframework\core\datastore\types\remote\MRemoteDatastoreEndpoint; 
use webfilesframework\core\datastore\types\directory\MDirectoryDatastore;
use webfilesframework\core\datasystem\file\system\MDirectory;

$remoteDatastoreEndpoint = new MRemoteDatastoreEndpoint(
    new MDirectoryDatastore(new MDirectory("localDirectory"))
);
$remoteDatastoreEndpoint->handleRemoteCall();

客户端访问数据存储

<?php
use webfilesframework\core\datastore\types\remote\MRemoteDatastore;

// url on which the method $remoteDatastoreEndpoint->handleRemoteCall(); is reachable:
$datastoreUrl = "https://:1234/datastore/";

$remoteDatastore = new MRemoteDatastore($datastoreUrl);
$remoteDatastore->getAllWebfiles();