1. Go to this page and download the library: Download potfur/stash 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/ */
potfur / stash example snippets
$models = new \Stash\ModelCollection();
$models->register(
new \Stash\Model\Model(
'\Order',
[
new \Stash\Converter\Type\Id(),
new \Stash\Converter\Type\Document('customer'),
new \Stash\Converter\Type\ArrayOf('items', Fields::TYPE_DOCUMENT)
]
),
'order'
);
$models->register(
new \Stash\Model\
'\OrderItem',
[
new \Stash\Converter\Type\Scalar('name', Fields::TYPE_STRING),
new \Stash\Converter\Type\Scalar('amount', Fields::TYPE_INTEGER),
new \Stash\Converter\Type\Scalar('cost', Fields::TYPE_INTEGER)
]
)
);
$models->register(
new \Stash\Model\
'\Voucher',
[
new \Stash\Converter\Type\Scalar('name', Fields::TYPE_STRING),
new \Stash\Converter\Type\Scalar('cost', Fields::TYPE_INTEGER)
]
)
);
$models->register(
new \Stash\Model\
'\Customer',
[
new \Stash\Converter\Type\Scalar('name', Fields::TYPE_STRING),
new \Stash\Converter\Type\Document('address')
]
)
);
$models->register(
new \Stash\Model\
'\CustomerAddress',
[
new \Stash\Converter\Type\Scalar('address', Fields::TYPE_STRING),
new \Stash\Converter\Type\Scalar('city', Fields::TYPE_STRING),
new \Stash\Converter\Type\Scalar('zip', Fields::TYPE_STRING)
]
)
);
$types = [
new \Stash\Converter\Type\IdType(),
new \Stash\Converter\Type\BooleanType(),
new \Stash\Converter\Type\IntegerType(),
new \Stash\Converter\Type\DecimalType(),
new \Stash\Converter\Type\StringType(),
new \Stash\Converter\Type\DateType(),
new \Stash\Converter\Type\ArrayType(),
new \Stash\Converter\Type\DocumentType()
];
$proxyAdapter = new \Stash\ProxyAdapter(new \ProxyManager\Factory\LazyLoadingValueHolderFactory());
$converter = new \Stash\Converter\Converter($types);
$referencer = new \Stash\ReferenceResolver($models);
$documentConverter = new \Stash\DocumentConverter($converter, $referencer, $models, $proxyAdapter);
$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
$connection = new \Stash\Connection(new \MongoClient(), $documentConverter, $eventDispatcher);
$connection->selectDB('test');
class Order
{
private $id;
private $customer;
private $items;
public function __construct($customer, $items)
{
$this->customer = $customer;
$this->items = $items;
}
}
class OrderItem
{
private $name;
private $amount;
private $cost;
public function __construct($name, $amount, $cost)
{
$this->name = $name;
$this->amount = $amount;
$this->cost = $cost;
}
}
class Voucher
{
private $name;
private $discount;
public function __construct($name, $discount)
{
$this->name = $name;
$this->discount = $discount;
}
}
class Customer
{
private $name;
private $address;
public function __construct($name, CustomerAddress $address)
{
$this->$name = $name;
$this->address = $address;
}
}
class CustomerAddress
{
private $address;
private $city;
private $zip;
public function __construct($address, $city, $zip)
{
$this->address = $address;
$this->city = $city;
$this->zip = $zip;
}
}
$order = new Order(
new Customer('Joe Doe', new CustomerAddress('Mongo alley', 'Somewhere', '12345')),
[
new OrderItem('Foos', 10, 1000),
new Voucher('Voucher', 250)
]
);
$connection->getCollection('order')->save($order);