Skip to content

Instantly share code, notes, and snippets.

@tobyS
Created April 10, 2013 13:42
Show Gist options
  • Save tobyS/5354730 to your computer and use it in GitHub Desktop.
Save tobyS/5354730 to your computer and use it in GitHub Desktop.
<?php
abstract class SnakStorage
{
public function canStore( Snak $snak )
{
throw new \RuntimeException("Not implemented, yet.");
}
public function storeSnak( $snak, $snakRole /* ... */ )
{
throw new \RuntimeException("Not implemented, yet.");
}
}
class PropertyValueSnakStorage
{
public function canStore( Snak $snak )
{
return ( $snak instanceof PropertyValueSnak );
}
public function storeSnak( $snak, $snakRole /* ... */ )
{
// Perform storage
}
}
class Updater
{
private $snakStorages = array();
public function __construct( array $snakStorages )
{
// .. add snak storages
}
public function insertSnak( Snak $snak, $snakRole )
{
foreach ( $this->snakStorages as $snakStorage )
{
if ( $snakStorage->canStore( $snak ) )
{
return $snakStorage->storeSnak( $snak /* ... */ );
}
}
throw new \RuntimeException( 'Unknown snak ...' );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment