2017 © Pedro Peláez
 

library statuslib-example

Library for use with Apigility documentation examples

image

andrewscaya/statuslib-example

Library for use with Apigility documentation examples

  • Saturday, April 21, 2018
  • by andrewscaya
  • Repository
  • 1 Watchers
  • 0 Stars
  • 1 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 13 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

StatusLib

This is a library designed to demonstrate an Apigility "Code-Connected" REST API, and has been written in parallel with the Apigility documentation., (*1)

It uses the following components:, (*2)

It is written as a Zend Framework module, but could potentially be dropped into other applications; use the StatusLib\*Factory classes to see how dependencies might be injected., (*3)

Installation

Use Composer to install the library in your application:, (*4)

$ composer require zfcampus/statuslib-example

If you are using this as part of a Zend Framework or Apigility application, you may need to enable the module in your config/application.config.php file, if you are not using the zend-component-installer:, (*5)

return [
    /* ... */
    'modules' => [
        /* ... */
        'StatusLib',
    ],
    /* ... */
];

Configuration

When used as a Zend Framework module, you may define the following configuration values in order to tell the library which adapter to use, and what options to pass to that adapter., (*6)

[
    'statuslib' => [
        'db' => 'Name of service providing DB adapter',
        'table' => 'Name of database table within db to use',
        'array_mapper_path' => 'path to PHP file returning an array for use with ArrayMapper',
    ],
    'service_manager' => [
        'aliases' => [
            // Set to either StatusLib\ArrayMapper or StatusLib\TableGatewayMapper
            \StatusLib\Mapper::class => \StatusLib\ArrayMapper::class,
        ],
    ],
]

For purposes of the Apigility examples, we suggest the following:, (*7)

  • Create a PHP file in your application's data/ directory named statuslib.php that returns an array:, (*8)

    <?php
    return [];
    
  • Edit your application's config/autoload/local.php file to set the array_mapper_path configuration value to data/statuslib.php:, (*9)

    <?php
    return [
      /* ... */
      'statuslib' => [
        'array_mapper_path' => 'data/statuslib.php',
      ],
    ];
    

The above will provide the minimum necessary requirements for experimenting with the library in order to test an API., (*10)

Using a database

The file data/statuslib.sqlite.sql contains a SQLite schema. You can create a SQLite database using:, (*11)

$ sqlite3 statuslib.db < path/to/data/statuslib.sqlite.sql

The schema can be either used directly by other databases, or easily modified to work with other databases., (*12)

StatusLib in a New Zend Framework Project

  1. Create a new Zend Framework project from scratch; we'll use my-project as our project folder:, (*13)

    $ composer create-project zendframework/skeleton-application my-project
    
  2. Install the StatusLib module:, (*14)

    $ composer require zfcampus/statuslib-example
    
  3. Build a DataSource, (*15)

    • Option A: Array data source:, (*16)

      First, copy the sample array to the data directory of thet application:, (*17)

      $ cp vendor/zfcampus/statuslib-example/data/sample-data/array-data.php data/status.data.php
      

      Then, configure this datasource by setting up a local.php configuration file:, (*18)

      $ cp config/autoload/local.php.dist config/autoload/local.php
      

      Next, add the StatusLib specific configuration for an array based data source:, (*19)

      'statuslib' => [
       'array_mapper_path' => 'data/status.data.php',
      ],
      'service_manager' => [
        'aliases' => [
            \StatusLib\Mapper::class => \StatusLib\ArrayMapper::class,
        ],
      ],
      
    • Option B: Sqlite data source:, (*20)

      First, create a sqlite3 database, and fill it with the sample data:, (*21)

      $ sqlite3 data/status.db < vendor/zfcampus/statuslib-example/data/statuslib.sqlite.sql
      $ sqlite3 data/status.db < vendor/zfcampus/statuslib-example/data/sample-data/db-sqlite-insert.sql
      

      Then, configure this datasource by setting up a local.php configuration file:, (*22)

      $ cp config/autoload/local.php.dist config/autoload/local.php
      

      Next, add the StatusLib specific configuration for a sqlite database based data source:, (*23)

      'db' => [
        'adapters' => [
            'MyDb' => [
                'driver' => 'pdo_sqlite',
                'database' => __DIR__ . '/../../data/status.db'
            ],
        ],
      ],
      'statuslib' => [
        'db' => 'MyDb',
        'table' => 'status',
      ],
      'service_manager' => [
        'aliases' => [
            \StatusLib\Mapper::class => \StatusLib\TableGatewayMapper::class,
        ],
      ],
      
  4. Create a test script to prove the data source is working:, (*24)

    // test.php
    namespace StatusLib;
    
    use Zend\Mvc\Application;
    use Zend\Stdlib\ArrayUtils;
    
    include 'vendor/autoload.php';
    
    $appConfig = include 'config/application.config.php';
    
    if (file_exists('config/development.config.php')) {
       $appConfig = ArrayUtils::merge(
           $appConfig,
           include 'config/development.config.php'
       );
    }
    
    $app = Application::init($appConfig);
    $services = $app->getServiceManager();
    
    $statusMapper = $services->get(Mapper::class);
    foreach ($statusMapper->fetchAll() as $status) {
       printf(
           "[%d] [%s] %s (by %s)\n",
           $status->timestamp,
           $status->id,
           $status->message,
           $status->user
       );
    }
    

The Versions

01/07 2015
23/04 2014

dev-feature/README-improvements-fix-for-db

dev-feature/README-improvements-fix-for-db http://apigility.org/

Library for use with Apigility documentation examples

  Sources   Download

BSD-3-Clause

The Requires

 

framework zf2 apigility