PHP code example of carlosv2 / dumbsmart-repositories
1. Go to this page and download the library: Download carlosv2/dumbsmart-repositories 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/ */
carlosv2 / dumbsmart-repositories example snippets
class User
{
private $id;
private $posts;
public function __construct($id) { $this->id = $id; }
public function getId() { return $this->id; }
public function setPosts(array $posts) { $this->posts = $posts; }
}
class Post
{
private $id;
public function __construct($id) { $this->id = $id; }
public function getId() { return $this->id; }
}
// Configure the metadata
$metadataManager = new MetadataManager();
$userMetadata = new Metadata(new AccessorObjectIdentifier('getId'));
$userMetadata->setRelation(new OneToManyRelation('posts'));
$metadataManager->addMetadata(User::class, $userMetadata);
$postMetadata = new Metadata(new AccessorObjectIdentifier('getId'));
$metadataManager->addMetadata(Post::class, $postMetadata);
// Configure the repositories
$repositoryManager = new RepositoryManager();
$repositoryManager->addRepository(User::class, new InMemoryRepository(new AccessorObjectIdentifier('getId')));
$repositoryManager->addRepository(Post::class, new InMemoryRepository(new AccessorObjectIdentifier('getId')));
// Create the persister object
$transactionFactory = new TransactionFactory($metadataManager, $repositoryManager);
$persister = new Persister($repositoryManager, $transactionFactory);
$post1 = new Post(1);
$post2 = new Post(2);
$user = new User(1);
$user->setPosts([$post1, $post2]);
$persister->save($user);
// This returns an object with same properties as $post2. However it does
// not return same object because it has been serialized and unserialized
$persister->findById(Post::class, 2);
// $persister is an instance of carlosV2\DumbsmartRepositories\Persister
$persister = ... ;
// FrontRepository implements Everzet\PersistedObjects\Repository
$frontRepository = new FrontRepository($persister, YourVeryOwnClass::class);
$repository = new YourVeryOwnClassRepository($frontRepository);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.