Bitrix-D7  20.5.0
Класс Field
Граф наследования:Field:
ExpressionField Relation ScalarField UserTypeField ManyToMany OneToMany Reference ArrayField BooleanField DateField EnumField FloatField IntegerField StringField

Открытые члены

 __construct ($name, $parameters=array())
 
 setEntity (Entity $entity)
 
 resetEntity ()
 
 getTypeMask ()
 
 validateValue ($value, $primary, $row, Result $result)
 
 modifyValueBeforeSave ($value, $data)
 
 getValidators ()
 
 addValidator ($validator)
 
 getFetchDataModifiers ()
 
 addFetchDataModifier ($modifier)
 
 getSaveDataModifiers ()
 
 addSaveDataModifier ($modifier)
 
 isSerialized ()
 
 setSerialized ()
 
 configureSerialized ()
 
 getName ()
 
 setName ($name)
 
 configureTitle ($title)
 Lang phrase. Подробнее...
 
 getTitle ()
 
 setParameter ($name, $value)
 
 getParameter ($name)
 
 hasParameter ($name)
 
 setParentField (Field $parentField)
 
 getParentField ()
 
 getDataType ()
 
 getEntity ()
 
 getLangCode ()
 
 getConnection ()
 
 serialize ($value)
 
 unserialize ($value)
 
 postInitialize ()
 Called after being initialized by Entity. Подробнее...
 

Открытые статические члены

static getOldDataTypeByClass ($class)
 
static getOldDataTypeByField (Field $field)
 
static getClassByOldDataType ($dateType)
 

Защищенные члены

 appendValidator ($validator)
 
 appendFetchDataModifier ($modifier)
 
 appendSaveDataModifier ($modifier)
 

Защищенные данные

 $name
 
 $dataType
 
 $initialParameters
 
 $title
 
 $validation = null
 
 $validators = null
 
 $additionalValidators = array()
 
 $fetchDataModification = null
 
 $fetchDataModifiers
 
 $additionalFetchDataModifiers = array()
 
 $saveDataModification = null
 
 $saveDataModifiers
 
 $additionalSaveDataModifiers = array()
 
 $isSerialized = false
 
 $parentField
 
 $entity
 

Статические защищенные данные

static $oldDataTypes
 

Подробное описание

См. определение в файле main/lib/orm/fields/field.php строка 24

Конструктор(ы)

◆ __construct()

__construct (   $name,
  $parameters = array() 
)
Аргументы
string$name
array$parametersdeprecated, use configure* and add* methods instead
Исключения
SystemException

Переопределяется в ManyToMany, CryptoField, StringField, ScalarField, FloatField, EnumField, DatetimeField, DateField, CryptoField, BooleanField, SecretField, DecimalField и ArrayField.

См. определение в файле main/lib/orm/fields/field.php строка 99

100  {
101  if ($name == '')
102  {
103  throw new SystemException('Field name required');
104  }
105 
106  $this->name = $name;
107  $this->dataType = null;
108  $this->initialParameters = $parameters;
109 
110  if (isset($parameters['title']))
111  {
112  $this->title = $parameters['title'];
113  }
114 
115  // validation
116  if (isset($parameters['validation']))
117  {
118  $this->validation = $parameters['validation'];
119  }
120 
121  // fetch data modifiers
122  if (isset($parameters['fetch_data_modification']))
123  {
124  $this->fetchDataModification = $parameters['fetch_data_modification'];
125  }
126 
127  // save data modifiers
128  if (isset($parameters['save_data_modification']))
129  {
130  $this->saveDataModification = $parameters['save_data_modification'];
131  }
132 
133  if (!empty($parameters['serialized']))
134  {
135  $this->setSerialized();
136  }
137  }

Методы

◆ addFetchDataModifier()

addFetchDataModifier (   $modifier)
Аргументы
\callable$modifier
Возвращает
$this
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 344

345  {
346  // append only when not null. and when is null - delay it
347  if ($this->fetchDataModifiers === null)
348  {
349  $this->additionalFetchDataModifiers[] = $modifier;
350  }
351  else
352  {
353  $this->appendFetchDataModifier($modifier);
354  }
355 
356  return $this;
357  }

◆ addSaveDataModifier()

addSaveDataModifier (   $modifier)
Аргументы
\callable$modifier
Возвращает
$this
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 420

421  {
422  // append only when not null. and when is null - delay it
423  if ($this->saveDataModifiers === null)
424  {
425  $this->additionalSaveDataModifiers[] = $modifier;
426  }
427  else
428  {
429  $this->appendSaveDataModifier($modifier);
430  }
431 
432  return $this;
433  }

◆ addValidator()

addValidator (   $validator)
Аргументы
Validators\Validator | callable$validator
Возвращает
$this
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 268

269  {
270  // append only when not null. and when is null - delay it
271  if ($this->validators === null)
272  {
273  $this->additionalValidators[] = $validator;
274  }
275  else
276  {
277  $this->appendValidator($validator);
278  }
279 
280  return $this;
281  }

◆ appendFetchDataModifier()

appendFetchDataModifier (   $modifier)
protected
Аргументы
\callable$modifier
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 364

365  {
366  if (!is_callable($modifier))
367  {
368  throw new SystemException(sprintf(
369  'Modifier of "%s" field of "%s" entity should be a callback',
370  $this->name, $this->entity->getDataClass()
371  ));
372  }
373 
374  $this->fetchDataModifiers[] = $modifier;
375  }

◆ appendSaveDataModifier()

appendSaveDataModifier (   $modifier)
protected
Аргументы
\callable$modifier
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 440

441  {
442  if (!is_callable($modifier))
443  {
444  throw new SystemException(sprintf(
445  'Save modifier of "%s" field of "%s" entity should be a callback',
446  $this->name, $this->entity->getDataClass()
447  ));
448  }
449 
450  $this->saveDataModifiers[] = $modifier;
451  }

◆ appendValidator()

appendValidator (   $validator)
protected
Аргументы
Validators\Validator | callable$validator
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 288

289  {
290  if (!($validator instanceof Validators\Validator) && !is_callable($validator))
291  {
292  throw new SystemException(sprintf(
293  'Validators of "%s" field of "%s" entity should be a Validator\Base or callback',
294  $this->name, $this->entity->getDataClass()
295  ));
296  }
297 
298  $this->validators[] = $validator;
299  }

◆ configureSerialized()

configureSerialized ( )
Уст.:
Возвращает
$this
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 481

482  {
483  $this->setSerialized();
484  return $this;
485  }

◆ configureTitle()

configureTitle (   $title)

Lang phrase.

Аргументы
$title
Возвращает
$this

См. определение в файле main/lib/orm/fields/field.php строка 504

505  {
506  $this->title = $title;
507  return $this;
508  }

◆ getClassByOldDataType()

static getClassByOldDataType (   $dateType)
static
Уст.:
Аргументы
$dateType
Возвращает
bool

См. определение в файле main/lib/orm/fields/field.php строка 602

603  {
604  return isset(static::$oldDataTypes[$dateType]) ? '\\'.static::$oldDataTypes[$dateType] : false;
605  }

◆ getConnection()

getConnection ( )
Возвращает
\Bitrix\Main\DB\Connection
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 626

627  {
628  if ($this->entity)
629  {
630  return $this->entity->getConnection();
631  }
632 
634  }
static getConnection($name="")
Static method returns database connection for the specified name.

◆ getDataType()

getDataType ( )
Уст.:
Возвращает
null|string

Переопределяется в Reference и ExpressionField.

См. определение в файле main/lib/orm/fields/field.php строка 562

563  {
564  if (empty($this->dataType))
565  {
566  return static::getOldDataTypeByField($this);
567  }
568 
569  return $this->dataType;
570  }

◆ getEntity()

getEntity ( )

См. определение в файле main/lib/orm/fields/field.php строка 607

◆ getFetchDataModifiers()

getFetchDataModifiers ( )
Возвращает
array|callback[]|null
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 305

306  {
307  if ($this->fetchDataModifiers === null)
308  {
309  $this->fetchDataModifiers = array();
310 
311  if ($this->fetchDataModification !== null)
312  {
313  $modifiers = call_user_func($this->fetchDataModification);
314 
315  if (!is_array($modifiers))
316  {
317  throw new SystemException(sprintf(
318  'Fetch Data Modification for %s field of %s entity should return array of modifiers (callbacks)',
319  $this->name, $this->entity->getDataClass()
320  ));
321  }
322 
323  foreach ($modifiers as $modifier)
324  {
325  $this->appendFetchDataModifier($modifier);
326  }
327  }
328 
329  foreach ($this->additionalFetchDataModifiers as $modifier)
330  {
331  $this->appendFetchDataModifier($modifier);
332  }
333  }
334 
336  }

◆ getLangCode()

getLangCode ( )

См. определение в файле main/lib/orm/fields/field.php строка 612

613  {
614  $entity = $this->getEntity();
615  if($entity !== null)
616  {
617  return $entity->getLangCode().'_'.$this->getName().'_FIELD';
618  }
619  return null;
620  }

◆ getName()

getName ( )

См. определение в файле main/lib/orm/fields/field.php строка 487

488  {
489  return $this->name;
490  }

◆ getOldDataTypeByClass()

static getOldDataTypeByClass (   $class)
static
Уст.:
Аргументы
$class
Возвращает
bool

См. определение в файле main/lib/orm/fields/field.php строка 578

579  {
580  $map = array_flip(static::$oldDataTypes);
581 
582  return isset($map[$class]) ? $map[$class] : 'string';
583  }

◆ getOldDataTypeByField()

static getOldDataTypeByField ( Field  $field)
static
Уст.:
Аргументы
Field$field
Возвращает
bool

См. определение в файле main/lib/orm/fields/field.php строка 591

592  {
593  return static::getOldDataTypeByClass(get_class($field));
594  }

◆ getParameter()

getParameter (   $name)

См. определение в файле main/lib/orm/fields/field.php строка 532

533  {
534  return $this->initialParameters[$name];
535  }

◆ getParentField()

getParentField ( )
Возвращает
Field

См. определение в файле main/lib/orm/fields/field.php строка 553

◆ getSaveDataModifiers()

getSaveDataModifiers ( )
Возвращает
array|callback[]|null
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 381

382  {
383  if ($this->saveDataModifiers === null)
384  {
385  $this->saveDataModifiers = array();
386 
387  if ($this->saveDataModification !== null)
388  {
389  $modifiers = call_user_func($this->saveDataModification);
390 
391  if (!is_array($modifiers))
392  {
393  throw new SystemException(sprintf(
394  'Save Data Modification for %s field of %s entity should return array of modifiers (callbacks)',
395  $this->name, $this->entity->getDataClass()
396  ));
397  }
398 
399  foreach ($modifiers as $modifier)
400  {
401  $this->appendSaveDataModifier($modifier);
402  }
403  }
404 
405  foreach ($this->additionalSaveDataModifiers as $modifier)
406  {
407  $this->appendSaveDataModifier($modifier);
408  }
409  }
410 
412  }

◆ getTitle()

getTitle ( )

См. определение в файле main/lib/orm/fields/field.php строка 510

511  {
512  if($this->title !== null)
513  {
514  return $this->title;
515  }
516 
517  if(($title = Loc::getMessage($this->getLangCode())) <> '')
518  {
519  return $this->title = $title;
520  }
521 
522  return $this->title = $this->name;
523  }
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29

◆ getTypeMask()

getTypeMask ( )
abstract

Переопределяется в UserTypeField, ScalarField, Reference, OneToMany, ManyToMany и ExpressionField.

◆ getValidators()

getValidators ( )
Возвращает
callback[]|Validators\Validator[]
Исключения
SystemException

Переопределяется в StringField, EnumField, DateField и BooleanField.

См. определение в файле main/lib/orm/fields/field.php строка 229

230  {
231  if ($this->validators === null)
232  {
233  $this->validators = array();
234 
235  if ($this->validation !== null)
236  {
237  $validators = call_user_func($this->validation);
238 
239  if (!is_array($validators))
240  {
241  throw new SystemException(sprintf(
242  'Validation for %s field of %s entity should return array of validators',
243  $this->name, $this->entity->getDataClass()
244  ));
245  }
246 
247  foreach ($validators as $validator)
248  {
249  $this->appendValidator($validator);
250  }
251  }
252 
253  foreach ($this->additionalValidators as $validator)
254  {
255  $this->appendValidator($validator);
256  }
257  }
258 
259  return $this->validators;
260  }

◆ hasParameter()

hasParameter (   $name)

См. определение в файле main/lib/orm/fields/field.php строка 537

538  {
539  return array_key_exists($name, $this->initialParameters);
540  }

◆ isSerialized()

isSerialized ( )
Возвращает
boolean

См. определение в файле main/lib/orm/fields/field.php строка 456

457  {
458  return !empty($this->isSerialized);
459  }

◆ modifyValueBeforeSave()

modifyValueBeforeSave (   $value,
  $data 
)
Аргументы
$value
$data
Возвращает
mixed
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 213

214  {
215  $modifiers = $this->getSaveDataModifiers();
216 
217  foreach ($modifiers as $modifier)
218  {
219  $value = call_user_func_array($modifier, array($value, $data));
220  }
221 
222  return $value;
223  }

◆ postInitialize()

postInitialize ( )

Called after being initialized by Entity.

Возвращает
null

Переопределяется в EnumField.

См. определение в файле main/lib/orm/fields/field.php строка 650

651  {
652  return null;
653  }

◆ resetEntity()

resetEntity ( )

См. определение в файле main/lib/orm/fields/field.php строка 154

155  {
156  $this->entity = null;
157  }

◆ serialize()

serialize (   $value)

См. определение в файле main/lib/orm/fields/field.php строка 636

637  {
638  return serialize($value);
639  }

◆ setEntity()

setEntity ( Entity  $entity)
Аргументы
Entity$entity
Исключения
SystemException

Переопределяется в ExpressionField.

См. определение в файле main/lib/orm/fields/field.php строка 144

145  {
146  if ($this->entity !== null)
147  {
148  throw new SystemException(sprintf('Field "%s" already has entity', $this->name));
149  }
150 
151  $this->entity = $entity;
152  }

◆ setName()

setName (   $name)

См. определение в файле main/lib/orm/fields/field.php строка 492

493  {
494  $this->name = $name;
495  }

◆ setParameter()

setParameter (   $name,
  $value 
)

См. определение в файле main/lib/orm/fields/field.php строка 525

526  {
527  $this->initialParameters[$name] = $value;
528 
529  return $this;
530  }

◆ setParentField()

setParentField ( Field  $parentField)
Аргументы
Field$parentField

См. определение в файле main/lib/orm/fields/field.php строка 545

546  {
547  $this->parentField = $parentField;
548  }

◆ setSerialized()

setSerialized ( )
Исключения
SystemException

См. определение в файле main/lib/orm/fields/field.php строка 464

465  {
466  if (!$this->isSerialized)
467  {
468  $this->isSerialized = true;
469 
470  // add save- and fetch modifiers
471  $this->addSaveDataModifier(array($this, 'serialize'));
472  $this->addFetchDataModifier(array($this, 'unserialize'));
473  }
474  }

◆ unserialize()

unserialize (   $value)

См. определение в файле main/lib/orm/fields/field.php строка 641

642  {
643  return unserialize($value);
644  }

◆ validateValue()

validateValue (   $value,
  $primary,
  $row,
Result  $result 
)
Аргументы
$value
$primary
$row
Result$result
Возвращает
Result
Исключения
SystemException

Переопределяется в Reference и ExpressionField.

См. определение в файле main/lib/orm/fields/field.php строка 170

171  {
172  if ($value instanceof SqlExpression)
173  {
174  return $result;
175  }
176 
177  $validators = $this->getValidators();
178 
179  foreach ($validators as $validator)
180  {
181  if ($validator instanceof IValidator)
182  {
183  $vResult = $validator->validate($value, $primary, $row, $this);
184  }
185  else
186  {
187  $vResult = call_user_func_array($validator, array($value, $primary, $row, $this));
188  }
189 
190  if ($vResult !== true)
191  {
192  if ($vResult instanceof EntityError)
193  {
194  $result->addError($vResult);
195  }
196  else
197  {
198  $result->addError(new FieldError($this, $vResult, FieldError::INVALID_VALUE));
199  }
200  }
201  }
202 
203  return $result;
204  }

Поля

◆ $additionalFetchDataModifiers

$additionalFetchDataModifiers = array()
protected

См. определение в файле main/lib/orm/fields/field.php строка 54

◆ $additionalSaveDataModifiers

$additionalSaveDataModifiers = array()
protected

См. определение в файле main/lib/orm/fields/field.php строка 63

◆ $additionalValidators

$additionalValidators = array()
protected

См. определение в файле main/lib/orm/fields/field.php строка 45

◆ $dataType

$dataType
protected

См. определение в файле main/lib/orm/fields/field.php строка 30

◆ $entity

$entity
protected

См. определение в файле main/lib/orm/fields/field.php строка 76

◆ $fetchDataModification

$fetchDataModification = null
protected

См. определение в файле main/lib/orm/fields/field.php строка 48

◆ $fetchDataModifiers

$fetchDataModifiers
protected

См. определение в файле main/lib/orm/fields/field.php строка 51

◆ $initialParameters

$initialParameters
protected

См. определение в файле main/lib/orm/fields/field.php строка 33

◆ $isSerialized

$isSerialized = false
protected

См. определение в файле main/lib/orm/fields/field.php строка 70

◆ $name

$name
protected

См. определение в файле main/lib/orm/fields/field.php строка 27

◆ $oldDataTypes

$oldDataTypes
staticprotected
Инициализатор
= array(
'float' => 'Bitrix\Main\ORM\Fields\FloatField',
'string' => 'Bitrix\Main\ORM\Fields\StringField',
'text' => 'Bitrix\Main\ORM\Fields\TextField',
'datetime' => 'Bitrix\Main\ORM\Fields\DatetimeField',
'date' => 'Bitrix\Main\ORM\Fields\DateField',
'integer' => 'Bitrix\Main\ORM\Fields\IntegerField',
'enum' => 'Bitrix\Main\ORM\Fields\EnumField',
'boolean' => 'Bitrix\Main\ORM\Fields\BooleanField'
)

См. определение в файле main/lib/orm/fields/field.php строка 82

◆ $parentField

$parentField
protected

См. определение в файле main/lib/orm/fields/field.php строка 73

◆ $saveDataModification

$saveDataModification = null
protected

См. определение в файле main/lib/orm/fields/field.php строка 57

◆ $saveDataModifiers

$saveDataModifiers
protected

См. определение в файле main/lib/orm/fields/field.php строка 60

◆ $title

$title
protected

См. определение в файле main/lib/orm/fields/field.php строка 36

◆ $validation

$validation = null
protected

См. определение в файле main/lib/orm/fields/field.php строка 39

◆ $validators

$validators = null
protected

См. определение в файле main/lib/orm/fields/field.php строка 42


Объявления и описания членов класса находятся в файле: