nmcteam / migration
A migration framework to move content from source to destination
Requires
- php: >=5.3.0
Requires (Dev)
- mockery/mockery: dev-master@dev
This package is not auto-updated.
Last update: 2024-11-19 06:49:56 UTC
README
This mini-framework is designed to migrate content from a source to a destination using a source (that provides iterable content), filters (to manipulate the content), and actions (to do something with the content).
How to install
Use Composer to install this framework. In your composer.json
file:
{
"require": {
"nmcteam/migration": "~0.1.0"
}
}
Then run composer install
.
Getting Started
In this example, we create a job that echoes the HTML content from a set of URLs.
Our "source" is a custom iterator that returns instances of \NMC\Migration\Object
.
We use a filter to reduce the source HTML to only the markup within the <body>
tags.
We use an "action" to echo the HTML content.
<?php
// Source
$source = new \NMC\Migration\Source\UrlArray(['http://www.apple.com', 'http://www.php.net']);
// Job
$job = new \NMC\Migration\Job($source);
// Filter
$filter = new \NMC\Migration\Filter\MatchReduce('#<body[^>]+>(.+)</body>#', 1);
$job->addFilter($filter);
// Action
$action = new \NMC\Migration\Action\Imitate();
$job->addAction($action);
// Run job
$job->run();
What is a job?
A "job" is a collection of a source, filters, and actions. It will iterate the source, and apply its filters and actions to each object provided by the source.
What is a source?
A "source" is an iterator whose current()
method returns an instance of \NMC\Migration\ObjectInterface
.
What the source iterates, and how, is entirely up to you.
What is a filter?
A "filter" is an object that receives an instance of \NMC\Migration\ObjectInterface
and manipulates
the object's content. Changes to the object are performed by reference.
What is an action?
An "action" is an object that receives an instance of \NMC\Migration\ObjectInterface
and does something
with the object. An action could be as simple as echo
, or it could use the object to create new database
objects, insert new pages into a CMS, or generate new data in a variety of formats (e.g. CSV or JSON).
How to Contribute
- Fork this repository.
- Create a separate branch for each new feature.
- Submit a pull request from each feature branch.
All pull requests must adhere to the PSR-2 code styleguide. Each pull request must also be accompanied by passing PHPUnit tests.
Author
Copyright © 2014 New Media Campaigns.
License
MIT Public License.