Overview

Namespaces

  • DSchoenbauer
    • Orm
      • Builder
      • Entity
      • Enum
      • Events
        • Persistence
        • Validate
          • DataType
          • Schema
      • Exception
      • Framework

Classes

  • DSchoenbauer\Orm\Builder\ModelDirector
  • DSchoenbauer\Orm\Builder\PdoModelBuilder
  • DSchoenbauer\Orm\CrudModel
  • DSchoenbauer\Orm\Entity\AbstractEntity
  • DSchoenbauer\Orm\Enum\ModelEvents
  • DSchoenbauer\Orm\Events\AbstractEvent
  • DSchoenbauer\Orm\Events\Persistence\PdoCreate
  • DSchoenbauer\Orm\Events\Persistence\PdoDelete
  • DSchoenbauer\Orm\Events\Persistence\PdoSelect
  • DSchoenbauer\Orm\Events\Persistence\PdoUpdate
  • DSchoenbauer\Orm\Events\Validate\AbstractValidate
  • DSchoenbauer\Orm\Events\Validate\DataType\AbstractDataType
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeBoolean
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeDate
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeNumber
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeString
  • DSchoenbauer\Orm\Events\Validate\Schema\DefaultValue
  • DSchoenbauer\Orm\Events\Validate\Schema\RequiredFields
  • DSchoenbauer\Orm\Events\Validate\Schema\ValidFields
  • DSchoenbauer\Orm\Exception\InvalidDataTypeException
  • DSchoenbauer\Orm\Exception\RequiredFieldMissingException
  • DSchoenbauer\Orm\Framework\Attribute
  • DSchoenbauer\Orm\Framework\AttributeCollection
  • DSchoenbauer\Orm\Model

Interfaces

  • DSchoenbauer\Orm\Builder\BuilderInterface
  • DSchoenbauer\Orm\Builder\DirectorInterface
  • DSchoenbauer\Orm\Entity\EntityInterface
  • DSchoenbauer\Orm\Entity\HasBoolFieldsInterface
  • DSchoenbauer\Orm\Entity\HasDateFieldsInterface
  • DSchoenbauer\Orm\Entity\HasDateWithCustomFormatInterface
  • DSchoenbauer\Orm\Entity\HasDefaultValuesInterface
  • DSchoenbauer\Orm\Entity\HasFilterInterface
  • DSchoenbauer\Orm\Entity\HasNumericFieldsInterface
  • DSchoenbauer\Orm\Entity\HasRequiredFieldsInterface
  • DSchoenbauer\Orm\Entity\HasStaticValuesInterface
  • DSchoenbauer\Orm\Entity\HasStringFieldsInterface
  • DSchoenbauer\Orm\Entity\IsSortableInterface
  • DSchoenbauer\Orm\Exception\OrmExceptionInterface
  • DSchoenbauer\Orm\VisitorInterface
  • Overview
  • Namespace
  • Class
  1: <?php
  2: /*
  3:  * The MIT License
  4:  *
  5:  * Copyright 2017 David Schoenbauer.
  6:  *
  7:  * Permission is hereby granted, free of charge, to any person obtaining a copy
  8:  * of this software and associated documentation files (the "Software"), to deal
  9:  * in the Software without restriction, including without limitation the rights
 10:  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 11:  * copies of the Software, and to permit persons to whom the Software is
 12:  * furnished to do so, subject to the following conditions:
 13:  *
 14:  * The above copyright notice and this permission notice shall be included in
 15:  * all copies or substantial portions of the Software.
 16:  *
 17:  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 18:  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 19:  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 20:  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 21:  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 22:  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 23:  * THE SOFTWARE.
 24:  */
 25: namespace DSchoenbauer\Orm\Builder;
 26: 
 27: use DSchoenbauer\Orm\CrudModel;
 28: use DSchoenbauer\Orm\Entity\EntityInterface;
 29: use DSchoenbauer\Orm\Enum\ModelEvents;
 30: use DSchoenbauer\Orm\Events\Persistence\PdoCreate;
 31: use DSchoenbauer\Orm\Events\Persistence\PdoDelete;
 32: use DSchoenbauer\Orm\Events\Persistence\PdoSelect;
 33: use DSchoenbauer\Orm\Events\Persistence\PdoUpdate;
 34: use DSchoenbauer\Orm\Events\Validate\DataType\DataTypeBoolean;
 35: use DSchoenbauer\Orm\Events\Validate\DataType\DataTypeDate;
 36: use DSchoenbauer\Orm\Events\Validate\DataType\DataTypeNumber;
 37: use DSchoenbauer\Orm\Events\Validate\DataType\DataTypeString;
 38: use DSchoenbauer\Orm\Events\Validate\Schema\DefaultValue;
 39: use DSchoenbauer\Orm\Events\Validate\Schema\RequiredFields;
 40: use DSchoenbauer\Orm\Events\Validate\Schema\ValidFields;
 41: use PDO;
 42: 
 43: /**
 44:  *
 45:  *
 46:  * @author David Schoenbauer
 47:  */
 48: class PdoModelBuilder implements BuilderInterface
 49: {
 50: 
 51:     /**
 52:      * @var PDO
 53:      */
 54:     protected $adapter;
 55: 
 56:     /**
 57:      * @var CrudModel
 58:      */
 59:     protected $model;
 60: 
 61:     public function __construct(\PDO $adapter, EntityInterface $entity)
 62:     {
 63:         $this->setAdapter($adapter)->setModel(new CrudModel($entity));
 64:     }
 65: 
 66:     public function build()
 67:     {
 68:         return $this->getModel();
 69:     }
 70: 
 71:     public function buildFinalOutput()
 72:     {
 73:     }
 74: 
 75:     public function buildPersistence()
 76:     {
 77:         $adapter = $this->getAdapter();
 78:         $this->getModel()
 79:             ->accept(new PdoCreate([ModelEvents::CREATE], $adapter))
 80:             ->accept(new PdoSelect([ModelEvents::FETCH], $adapter))
 81:             ->accept(new PdoUpdate([ModelEvents::UPDATE], $adapter))
 82:             ->accept(new PdoDelete([ModelEvents::DELETE], $adapter));
 83:     }
 84: 
 85:     public function buildValidations()
 86:     {
 87:         $this->getModel()
 88:             ->accept(new ValidFields([ModelEvents::CREATE, ModelEvents::UPDATE]))
 89:             ->accept(new DefaultValue([ModelEvents::CREATE]))
 90:             ->accept(new RequiredFields([ModelEvents::CREATE, ModelEvents::UPDATE]))
 91:         
 92:             ->accept(new DataTypeBoolean([ModelEvents::CREATE, ModelEvents::UPDATE]))
 93:             ->accept(new DataTypeDate([ModelEvents::CREATE, ModelEvents::UPDATE]))
 94:             ->accept(new DataTypeNumber([ModelEvents::CREATE, ModelEvents::UPDATE]))
 95:             ->accept(new DataTypeString([ModelEvents::CREATE, ModelEvents::UPDATE]))
 96:             
 97:             ;
 98:     }
 99: 
100:     /**
101:      * @return PDO
102:      */
103:     public function getAdapter()
104:     {
105:         return $this->adapter;
106:     }
107: 
108:     /**
109:      * @param PDO $adapter
110:      * @return $this
111:      */
112:     public function setAdapter(PDO $adapter)
113:     {
114:         $this->adapter = $adapter;
115:         return $this;
116:     }
117: 
118:     /**
119:      * @return CrudModel
120:      */
121:     public function getModel()
122:     {
123:         return $this->model;
124:     }
125: 
126:     /**
127:      * @param CrudModel $model
128:      * @return $this
129:      */
130:     public function setModel(CrudModel $model)
131:     {
132:         $this->model = $model;
133:         return $this;
134:     }
135: }
136: 
API documentation generated by ApiGen