ck/php-marcspec

PHP based MARCspec parser and validator

2.0.3 2017-12-12 08:18 UTC

This package is auto-updated.

Last update: 2024-10-15 20:28:49 UTC


README

Build Status

PHP MARCspec parser and validator.

For currently supported version of MARCspec - A common MARC record path language see http://marcspec.github.io/ .

Installation

Installation can be done by using composer. Just run

composer require ck/php-marcspec

PHP-MARCspec requires PHP 5.4 or later.

Usage

<?php

require("vendor/autoload.php");

use CK\MARCspec\MARCspec;
use CK\MARCspec\Field;
use CK\MARCspec\Subfield;
use CK\MARCspec\ComparisonString;
use CK\MARCspec\SubSpec;

// parse and access MARCspec like an array
$fixed = new MARCspec('007[0]/1-8{/0=\a}');

$fixed['field'];                                                   // CK\MARCspec\FieldInterface
echo $fixed['field']['tag'];                                       // '007'
echo $fixed['field']['charStart'];                                 // 1
echo $fixed['field']['charEnd'];                                   // 8
echo $fixed['field']['charLength'];                                // 8
$fixed['field']['subSpecs'][0]['leftSubTerm'];                     // CK\MARCspec\MARCspecInterface
echo $fixed['field']['subSpecs'][0]['leftSubTerm'];                // '007[0]/0'
echo $fixed['field']['subSpecs'][0]['operator'];                   // '='
$fixed['field']['subSpecs'][0]['rightSubTerm'];                    // CK\MARCspec\ComparisonStringInterface
echo $fixed['field']['subSpecs'][0]['rightSubTerm'];               // '\a'
echo $fixed['field']['subSpecs'][0]['rightSubTerm']['comparable']; // 'a'
$fixed;                                                            // CK\MARCspec\MARCspecInterface
echo $fixed;                                                       // '007[0]/1-8{007[0]/0=\a}'

$variable = new MARCspec('245^1');

echo $variable['field']['tag'];          // '245'
echo $variable['indicator'];             // CK\MARCspec\IndicatorInterface
echo $variable['indicator']['position']; // '1'
$variable;                               // CK\MARCspec\MARCspecInterface
echo $variable;                          // '245^1'

$complex = new MARCspec('020$a{$q[0]~\pbk}{$c/0=\€|$c/0=\$}');

echo $complex['field']['tag'];        // '020'
$complex['subfields'];                // Array
$complex['subfields'][0]['tag'];      // CK\MARCspec\SubfieldInterface
echo $complex['subfields'][0]['tag']; // 'a'

$complex['a'][0]['subSpecs'][0]['leftSubTerm'];                     // CK\MARCspec\MARCspecInterface
echo $complex['a'][0]['subSpecs'][0]['leftSubTerm'];                // '020$q[0]'
echo $complex['a'][0]['subSpecs'][0]['operator'];                   // '~'
$complex['a'][0]['subSpecs'][0]['rightSubTerm'];                    // CK\MARCspec\ComparisonStringInterface
echo $complex['a'][0]['subSpecs'][0]['rightSubTerm']['comparable']; // 'pbk'

echo $complex['a'][0]['subSpecs'][1][0]['leftSubTerm'];                       // '020$c/0'
echo $complex['a'][0]['subSpecs'][1][0]['leftSubTerm']['c'][0]['charStart'];  // 0
echo $complex['a'][0]['subSpecs'][1][0]['leftSubTerm']['c'][0]['charEnd'];    // 0
echo $complex['a'][0]['subSpecs'][1][0]['leftSubTerm']['c'][0]['charLength']; // 1
echo $complex['a'][0]['subSpecs'][1][0]['operator'];                          // '='
echo $complex['a'][0]['subSpecs'][1][0]['rightSubTerm']['comparable'];        // '€'

echo $complex['a'][0]['subSpecs'][1][1]['leftSubTerm'];                       // '020$c/0'
echo $complex['a'][0]['subSpecs'][1][1]['leftSubTerm']['c'][0]['charStart'];  // 0
echo $complex['a'][0]['subSpecs'][1][1]['leftSubTerm']['c'][0]['charEnd'];    // 0
echo $complex['a'][0]['subSpecs'][1][1]['leftSubTerm']['c'][0]['charLength']; // 1
echo $complex['a'][0]['subSpecs'][1][1]['operator'];                          // '='
echo $complex['a'][0]['subSpecs'][1][1]['rightSubTerm']['comparable'];        // '$'

// creating MARCspec

// creating a new Field
$Field = new Field('...');

// creating a new MARCspec by setting the Field
$MARCspec = MARCspec::setField($Field);

// creating a new Subfield
$Subfield = new Subfield('a');

// adding the Subfield to the MARCspec
$MARCspec->addSubfields($Subfield);

// creating instances of MARCspec and ComparisonString
$LeftSubTerm = new MARCspec('...$a/#');
$RightSubTerm = new ComparisonString(',');

// creating a new SubSpec with instances above and an operator '='
$SubSpec = new SubSpec($LeftSubTerm,'=',$RightSubTerm);

// adding the SubSpec to the Subfield
$Subfield['subSpecs'] = $SubSpec;

// whole MARCspec
echo $MARCspec; // '...[0]$a{...$a/#-#=\,}' 

ArrayAccess vs. Methods

MARCspec can be accessed like an immutable array with the following offsets or with its correponding methods (see source code for documentation of all methods).

Instances of MARCspec

Instances of Field

Instances of Subfield

Instances of Indicator

Instances of ComparisonString

Instances of SubSpec