BasePrimitive.class.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************************
00003  *   Copyright (C) 2004-2008 by Konstantin V. Arkhipov                     *
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 
00018     abstract class BasePrimitive
00019     {
00020         protected $name     = null;
00021         protected $default  = null;
00022         protected $value    = null;
00023 
00024         protected $required = false;
00025         protected $imported = false;
00026 
00027         protected $raw      = null;
00028         
00029         protected $customError  = null;
00030 
00031         public function __construct($name)
00032         {
00033             $this->name = $name;
00034         }
00035         
00036         public function getName()
00037         {
00038             return $this->name;
00039         }
00040         
00044         public function setName($name)
00045         {
00046             $this->name = $name;
00047             
00048             return $this;
00049         }
00050 
00051         public function getDefault()
00052         {
00053             return $this->default;
00054         }
00055         
00059         public function setDefault($default)
00060         {
00061             $this->default = $default;
00062             
00063             return $this;
00064         }
00065         
00066         public function getValue()
00067         {
00068             return $this->value;
00069         }
00070         
00071         public function getRawValue()
00072         {
00073             return $this->raw;
00074         }
00075         
00076         public function getActualValue()
00077         {
00078             if (null !== $this->value)
00079                 return $this->value;
00080             elseif ($this->imported)
00081                 return $this->raw;
00082             
00083             return $this->default;
00084         }
00085         
00086         public function getSafeValue()
00087         {
00088             if ($this->imported)
00089                 return $this->value;
00090             
00091             return $this->default;
00092         }
00093         
00097         public function setValue($value)
00098         {
00099             $this->value = $value;
00100             
00101             return $this;
00102         }
00103         
00107         public function dropValue()
00108         {
00109             $this->value = null;
00110             
00111             return $this;
00112         }
00113         
00119         public function setRawValue($raw)
00120         {
00121             $this->raw = $raw;
00122             
00123             return $this;
00124         }
00125         
00126         public function isRequired()
00127         {
00128             return $this->required;
00129         }
00130         
00134         public function setRequired($really = false)
00135         {
00136             $this->required = (true === $really ? true : false);
00137             
00138             return $this;
00139         }
00140         
00144         public function required()
00145         {
00146             $this->required = true;
00147             
00148             return $this;
00149         }
00150         
00154         public function optional()
00155         {
00156             $this->required = false;
00157             
00158             return $this;
00159         }
00160         
00161         public function isImported()
00162         {
00163             return $this->imported;
00164         }
00165         
00169         public function clean()
00170         {
00171             $this->raw = null;
00172             $this->value = null;
00173             $this->imported = false;
00174             
00175             return $this;
00176         }
00177         
00178         public function importValue($value)
00179         {
00180             return $this->import(array($this->getName() => $value));
00181         }
00182         
00183         public function exportValue()
00184         {
00185             return $this->value;
00186         }
00187         
00188         public function getCustomError()
00189         {
00190             return $this->customError;
00191         }
00192         
00193         protected function import($scope)
00194         {
00195             if (
00196                 !empty($scope[$this->name])
00197                 || (
00198                     isset($scope[$this->name])
00199                     && $scope[$this->name] !== ''
00200                 )
00201             ) {
00202                 $this->raw = $scope[$this->name];
00203                 
00204                 return $this->imported = true;
00205             }
00206             
00207             $this->clean();
00208             
00209             return null;
00210         }
00211     }
00212 ?>