# ScopeSetter.class.php

Go to the documentation of this file.

    00001 <?php
    00002 /***************************************************************************
    00003  *   Copyright (C) 2007 by Ivan Y. Khvostishkov                            *
    00004  *                                                                         *
    00005  *   This program is free software; you can redistribute it and/or modify  *
    00006  *   it under the terms of the GNU Lesser General Public License as        *
    00007  *   published by the Free Software Foundation; either version 3 of the    *
    00008  *   License, or (at your option) any later version.                       *
    00009  *                                                                         *
    00010  ***************************************************************************/
    00011
    00012     final class ScopeSetter extends PrototypedSetter
    00013     {
    00014         private $getter = null;
    00015
    00016         public function __construct(EntityProto $proto, &$object)
    00017         {
    00018             Assert::isArray($object);
    00019
    00020             return parent::__construct($proto, $object);
    00021         }
    00022
    00023         public function set($name, $value)
    00024         {
    00025             if (!isset($this->mapping[$name]))
    00026                 throw new WrongArgumentException(
    00027                     "knows nothing about property '{$name}'"
    00028                 );
    00029
    00030             Assert::isTrue(!is_object($value), 'cannot put objects into scope');
    00031
    00032             $primitive = $this->mapping[$name];
    00033
    00034             $this->object[$primitive->getName()] =  $value;
    00035
    00036             return $this;
    00037         }
    00038
    00042         public function getGetter()
    00043         {
    00044             if (!$this->getter) {
    00045                 $this->getter = new ScopeGetter($this->proto, $this->object);
    00046             }
    00047
    00048             return $this->getter;
    00049         }
    00050     }
    00051 ?>