cyrilleinvalides/choupas/www/admin/app/libs/sense/Entity/Entities/Model.php

92 lines
2.1 KiB
PHP
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class Model extends Entity implements IteratorAggregate {
protected static
$type,
$subType,
$rootType,
$parentType = 'Provider';
protected function __construct ( $data, Provider $provider ) {
parent::__construct($data, $provider);
// extends model
if ( !empty($this->data['extends']) ) {
if ( !$parentData = $provider->getChildrenData('Model', $this->data['extends']) )
throw new Exception(sprintf(
'Parent Model "%3$s" for Child Model "%2$s" in Provider "%1$s" does not exists !',
$provider->getName(),
$this->data['name'],
$this->data['extends']
));
// extends services
$this->data['children']['Service'] = array_merge(
!empty($parentData['children']['Service']) ? $parentData['children']['Service'] : array(),
!empty($this->data['children']['Service']) ? $this->data['children']['Service'] : array()
);
// extends views
$this->data['children']['View'] = array_merge(
!empty($parentData['children']['View']) ? $parentData['children']['View'] : array(),
!empty($this->data['children']['View']) ? $this->data['children']['View'] : array()
);
}
}
public function getIterator () {
return $this->__get('Field');
}
public function apply () {
$errors = array();
foreach ( $this->model->Field as $name => $field )
if ( $field->apply($this->data) )
return $this;
}
public function invalid () {
$errors = array();
foreach ( $this->model->Field as $name => $field )
if ( $error = $field->invalid(
!empty($this->data[$field->getName()]) ? $this->data[$field->getName()] : null
) );// $errors[] = $error;
return $errors;
}
public function getState ( $service, $data = array() ) {
if ( $service )
return $this->getModel()->Service->$service->getState($data);
throw new Exception(sprintf(
'Method "%1$s->%2$s" must be reimplemented in child class "%3$s" !',
__CLASS__,
__METHOD__,
$this::getSubType()
));
}
public function getEntityObject ( $data = array() ) {
return new EntityObject($this, $data);
}
}
?>