1. Go to this page and download the library: Download level-2/maphper library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
level-2 / maphper example snippets
$pdo = new PDO('mysql:dbname=maphpertest;host=127.0.0.1', 'username', 'password');
$blogSource = new \Maphper\DataSource\Database($pdo, 'blog', 'id');
$blogs = new \Maphper\Maphper($blogSource);
// Equivalent to SELECT * FROM blogs
foreach ($blogs as $blog) {
echo $blog->title . '<br />';
}
//Equivalent to SELECT * FROM blogs WHERE id = 142
echo $blogs[142]->title;
//find blogs that were posted on a specific date
//Equivalent to SELECT * FROM blogs WHERE date = '2015-04-09'
$filteredBlogs = $blogs->filter(['date' => '2014-04-09']);
//this will only retrieve blogs that were matched by the filter
foreach ($filteredBlogs as $blog) {
echo $blog->title;
}
//find blogs that were posted with the title "My Blog" by the author with the id of 7
//Equivalent to SELECT * FROM blogs WHERE title = 'My Blog' AND authorId = 7
$filteredBlogs = $blogs->filter(['title' => 'My Blog'])->filter(['authorId' => 7]);
//this will only retrieve blogs that were matched by both filters
foreach ($filteredBlogs as $blog) {
echo $blog->title;
}
foreach ($blogs->filter(['date' => '2014-04-09']) as $blog) {
echo $blog->title;
}
//Equivalent to SELECT * FROM blogs LIMIT 5 ORDER BY date DESC
foreach ($blogs->limit(5)->sort('date desc') as $blog) {
echo $blog->title;
}
//Equivalent to SELECT count(*) FROM lblogs
echo 'Total number of blogs is ' . count($blogs);
//Count the number of blogs in category 3
//Equivalent to SELECT count(*) FROM blogs WHERE categoryId = 3
echo count($blogs->filter(['categoryId' => 3]);
$pdo = new PDO('mysql:dbname=maphpertest;host=127.0.0.1', 'username', 'password');
$blogSource = new \Maphper\DataSource\Database($pdo, 'blog', 'id');
$blogs = new \Maphper\Maphper($blogSource);
$blog = new stdClass;
$blog->title = 'My Blog Title';
$blog->content = 'This is my first blog entry';
//Store the blog using the next available ID
$blogs[] = $blog;
echo 'The new blog ID is :' . $blog->id;
$blog = new stdClass;
$blog->title = 'My Blog Title';
$blog->content = 'This is my first blog entry';
//Store the blog with the primary key of 7
$blogs[7] = $blog;
$blog = new stdClass;
$blog->id = 7;
$blog->title = 'My Blog Title';
$blog->content = 'This is my first blog entry';
//Store the blog with the primary key of 7
$blogs[] = $blog;
$authorSource = new \Maphper\DataSource\Database($pdo, 'author', 'id');
$authors = new \Maphper\Maphper($authorSource);
$author = $authors[123];
echo $author->name;
//Create a one-to-one relationship between blogs and authors (a blog can only have one author)
$relation = new \Maphper\Relation\One($authors, 'authorId', 'id');
$blogs->addRelation('author', $relation);
//Create a one-to-many relationship between blogs and authors (an author can have multiple blog entries)
//Joining from the 'id' field in the authors mapper to the 'authorId' field in the blogs mapper
$relation = new \Maphper\Relation\Many($blogs, 'id', 'authorId');
$authors->addRelation('blogs', $relation);
//Count all the blogs by the author with id 4
$authors[4]->name . ' has posted ' . count($authors[4]->blogs) . ' blogs:<br />';
//Loop through all the blogs created by the author with id 4
foreach ($authors[4]->blogs as $blog) {
echo $blog->title . '<br />';
}
$authors = new \Maphper\Maphper(new \Maphper\DataSource\Database($pdo, 'author'));
$blogs = new \Maphper\Maphper(new \Maphper\DataSource\Database($pdo, 'blog', 'id'));
$blogs->addRelation('author', new \Maphper\Relation\One($authors, 'authorId', 'id'));
$blog = new stdClass;
$blog->title = 'My First Blog';
$blog->date = new \DateTime();
$blog->author = new stdClass;
$blog->author->name = 'Tom Butler';
$blogs[] = $blog;
$authors = new \Maphper\Maphper(new \Maphper\DataSource\Database($pdo, 'author'));
$blogs = new \Maphper\Maphper(new \Maphper\DataSource\Database($pdo, 'blog', 'id'))
$authors->addRelation('blogs', new \Maphper\Relation\Many($blogs, 'id', 'authorId'));
//Find the author with id 4
$author = $authors[4];
$blog = new stdClass;
$blog->title = 'My New Blog';
$blog->date = new \DateTime();
//Add the blog to the author. This will save to the database at the this point, you do not need to explicitly
//Save the $author object after adding a blog to it.
$author->blogs[] = $blog;
$pdo = new PDO('mysql:dbname=maphpertest;host=127.0.0.1', 'username', 'password');
$productSource = new \Maphper\DataSource\Database($pdo, 'products', ['manufacturerId', 'partNumber']);
$products = new \Maphper\Maphper($productSource);
//Get the product with manufacturerId 7 and partNumber AC294
echo $products[7]['AC294']->name;
$pdo = new PDO('mysql:dbname=maphpertest;host=127.0.0.1', 'username', 'password');
$productSource = new \Maphper\DataSource\Database($pdo, 'products', ['manufacturerId', 'partNumber']);
$products = new \Maphper\Maphper($productSource);
$product = new stdClass;
$product->name 'Can of cola';
$products[1]['CANCOLA'] = $product;
$blog = new stdClass;
$blog->title = 'A blog entry';
//You can construct the date object using any of the formats availble in the inbuilt PHP datetime class
$blog->date = new \DateTime('2015-11-14');
//Find all blogs posted on 2015-11-14
$maphper->filter(['date' => new \DateTime('2015-11-14')]);
$pdo = new PDO('mysql:dbname=maphpertest;host=127.0.0.1', 'username', 'password');
$blogs = new \Maphper\DataSource\Database($pdo, 'blogs', 'id', ['editmode' => true]);
$blog = new stdClass;
$blog->title = 'A blog';
$blog->date = new \DateTime();
$blogs[] = $blog;
$blog = new stdClass;
$blog->title = 1;
$blogs[] = $blog;
class Product {
private $name;
private $price;
const TAX_RATE = 0.2;
public function getTax() {
return $this->price * self::TAX_RATE;
}
public function getTotalPrice() {
return $this->price + $this->getTax();
}
public function setName($name) {
$this->name = $name;
}
}
$dataSource = new \Maphper\DataSource\Database($pdo, 'product', 'id');
$products = new \Maphper\Maphper($dataSource, ['resultClass' => 'Product']);
$product = $products[123];
echo get_class($product); //"Product" instance
//And as expected, the methods from Product are available:
$tax = $product->getTax();
$total = $product->getTotalPrice();
$product = new Product;
$product->setName('A Product');
//Write the product to the mapper. Even though $product->name is private it will still be stored
$products[] = $product;
class TaxCalculator {
const TAX_RATE = 0.2;
public function getTax($price) {
return $price * self::TAX_RATE;
}
}
class Product {
private $name;
private $price;
private $taxCalculator;
public function __construct(TaxCalculator $taxCalculator) {
$this->taxCalculator = $taxCalculator;
}
public function getTax() {
return $this->taxCalculator->getTax($this->price);
}
public function getTotalPrice() {
return $this->price + $this->getTax();
}
}
$dataSource = new \Maphper\Maphper($database, ['resultClass' => 'Product']);
$taxCalculator = new TaxCalculator;
$dataSource = new \Maphper\Maphper($database, ['resultClass' => function() use ($taxCalculator) {
return new Product($taxCalculator);
}]);
$dice = new \Dice\Dice;
$dataSource = new \Maphper\Maphper($database, ['resultClass' => function() use ($dice) {
return $dice->create('Product');
}]);
$actors = new \Maphper\Maphper(new \Maphper\Datasource\Database($pdo, 'actor', 'id'));
$movies = new \Maphper\Maphper(new \Maphper\Datasource\Database($pdo, 'movie', 'id'));
$cast = new \Maphper\Maphper(new \Maphper\Datasource\Database($pdo, 'cast', ['movieId', 'actorId']));
$actors->addRelation('movies', new \Maphper\Relation\ManyMany($cast, $movies, 'id', 'movieId'));
$movies->addRelation('actors', new \Maphper\Relation\ManyMany($cast, $actors, 'id', 'actorId'));
$actor = new \stdclass;
$actor->id = 123;
$actor->name = 'Samuel L. Jackson';
//save the actor
$actors[] = $actor;
//now add some movies to the actor
$movie1 = new \stdclass;
$movie1->title = 'Pulp Fiction';
$actor->movies[] = $movie1;
//now add some movies to the actor
$movie2 = new \stdclass;
$movie2->title = 'Snakes on a Plane';
$actor->movies[] = $movie2;
$actor = $actors[123];
echo $actor->name . ' was in the movies:' . "\n";
foreach ($actor->movies as $movie) {
echo $movie->title . "\n";
}
$actor = new \stdclass;
$actor->id = 124;
$actor->name = 'John Travolta';
$actors[] = $actor;
//Find the movie 'Pulp Fiction and add it to John Travolta
$movie = $movies->filter(['title' =>'Pulp Fiction'])->item(0);
$actor->movies[] = $movie;
$movie = $movies->filter(['title' =>'Pulp Fiction'])->item(0);
echo 'The actors in ' . $movie->title . ' are :' . "\n";
foreach ($movie->actors as $actor) {
echo $actor->name . "\n";
}
$actors->addRelation('movies', new \Maphper\Relation\ManyMany($cast, $movies, 'id', 'movieId'));
$movies->addRelation('actors', new \Maphper\Relation\ManyMany($cast, $actors, 'id', 'actorId'));
$actors->addRelation('roles', new \Maphper\Relation\ManyMany($cast, $movies, 'id', 'movieId', 'movie');
$movies->addRelation('cast', new \Maphper\Relation\ManyMany($cast, $actors, 'id', 'actorId', 'actor');
$actor = $actors[123];
//Find the movie
$movie = $movies->filter(['title' =>'Pulp Fiction'])->item(0);
//Create a role
$role = new \stdClass;
//Set the character name for the role
$role->characterName = 'Jules Winnfield';
//Assign the movie to the role
$role->movie = $movie;
//Assign the role to the actor
$actor->roles[] = $role;
//Find the movie
$movie = $movies->filter(['title' =>'Snakes on a Plane'])->item(0);
//Create a role
$role = new \stdClass;
//Set the character name for the role
$role->characterName = 'Neville Flynn';
//Assign the movie to the role
$role->movie = $movie;
//Assign the role to the actor
$actor->roles[] = $role;
$actor = $actors[123];
echo $actor->name . ' has the roles:' . "\n"
foreach ($actors[123]->roles as $role) {
echo $role->characterName . ' in the movie . ' . $role->movie->title . "\n";
}
Samuel L. Jackson has the roles:
Jules Winnfield in Pulp Fiction
Neville Flynn in Snakes on a plane
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.