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).
Use Composer to install this framework. In your composer.json
file:
{
"require": {
"nmcteam/migration": "~0.1.0"
}
}
Then run composer install
.
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();
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.
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.
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.
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).
- 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.
Copyright © 2014 New Media Campaigns.
MIT Public License.