コード例 #1
0
 public function register()
 {
     $def = new EntityDefinition(Session::class);
     $def->id(Sha256StrongHash::class)->mapsTo('token');
     $def->required('data', Text::class);
     $def->timestamps();
     $this->remodel->register($def);
     $this->ioc->singleton(SessionGateway::class, SessionGateway::class);
     $this->ioc->singleton(SessionRepository::class, SessionRepository::class);
     $this->ioc->singleton(SessionManager::class, function () {
         $manager = new SessionManager();
         $manager->setHandler($this->ioc->make(DatabaseSessionStorage::class));
         return $manager;
     });
 }
コード例 #2
0
ファイル: Registry.php プロジェクト: bapcat/remodel
 public function register(EntityDefinition $builder)
 {
     $this->defs[$builder->full_name] = $builder;
     $this->unchecked[] = $builder;
     $this->ioc->bind('bap.remodel.scopes.' . str_replace('\\', '.', $builder->full_name), function () use($builder) {
         return $builder->scopes;
     });
     $this->tailor->bindCallback($builder->full_name, function (Generator $gen) use($builder) {
         $this->checkDefinitions();
         $file = $gen->generate('Entity', $builder->toArray());
         $gen->includeFile($file);
     });
     foreach (['Id', 'Gateway', 'Repository', 'NotFoundException'] as $class) {
         $this->tailor->bindCallback($builder->full_name . $class, function (Generator $gen) use($builder, $class) {
             $this->checkDefinitions();
             $file = $gen->generate($class, $builder->toArray());
             $gen->includeFile($file);
         });
     }
 }
コード例 #3
0
ファイル: index.php プロジェクト: bapcat/router
use BapCat\Remodel\Registry;
use BapCat\Remodel\RemodelConnection;
use Illuminate\Database\Query\Grammars\MySqlGrammar;
use Illuminate\Database\Query\Processors\MySqlProcessor;
// Grab filesystem directories
$persist = new LocalDriver(__DIR__ . '/..');
$cache = $persist->getDirectory('/cache');
$registry = new Registry($ioc, $cache);
$connection = new RemodelConnection(new PDO('mysql:host=localhost;dbname=test', 'root', ''), new MySqlGrammar(), new MySqlProcessor());
use BapCat\Values\Email;
use BapCat\CoolThing\User;
use BapCat\CoolThing\UserId;
use BapCat\CoolThing\UserGateway;
use BapCat\CoolThing\UserRepository;
use BapCat\CoolThing\UserNotFoundException;
$def = new EntityDefinition(User::class);
$def->required('email', Email::class);
$def->optional('name', Text::class);
$def->timestamps();
$registry->register($def);
$user_repo = new UserRepository(Phi::instance(), new UserGateway($connection));
Phi::instance()->bind(UserRepository::class, $user_repo);
$router = new BapCat\Router\Router($ioc);
$router->get('', '/', function () {
    return 'Test';
});
require __DIR__ . '/TestValidatedRequest.php';
$router->get('', '/landing/:site', function (TestValidatedRequest $test, Text $site) {
    if (!$test->validated) {
        echo "Validation failed!<br>\n";
        foreach ($test->validation_errors as $err) {
コード例 #4
0
ファイル: EntityProvider.php プロジェクト: bapcat/unifi
 private function registerGuest()
 {
     $guest = new EntityDefinition(Guest::class);
     $guest->table('guest');
     $guest->required('_id', MongoId::class);
     $guest->required('site_id', MongoId::class);
     $guest->required('mac', Text::class);
     // MAC
     $guest->required('ap_mac', Text::class);
     // MAC
     $guest->required('start', Text::class);
     // Number
     $guest->required('end', Text::class);
     // Number
     $guest->required('duration', Text::class);
     // Number
     $guest->required('authorized_by', Text::class);
     $guest->required('unauthorized_by', Text::class);
     $guest->scope('authed', function ($query) {
         //TODO: Figure out MongoDB-local timestamp function
         //TODO: Auth time needs to be site-dependent
         return $query->whereNull('unauthorized_by')->where('end', '>', time() - 120 * 60);
     });
     $this->remodel->register($guest);
 }