%PDF- %PDF-
| Direktori : /www/varak.net/losik.varak.net/vendor/dibi/dibi/src/Dibi/Reflection/ |
| Current File : /www/varak.net/losik.varak.net/vendor/dibi/dibi/src/Dibi/Reflection/Column.php |
<?php
/**
* This file is part of the Dibi, smart database abstraction layer (https://dibiphp.com)
* Copyright (c) 2005 David Grudl (https://davidgrudl.com)
*/
declare(strict_types=1);
namespace Dibi\Reflection;
use Dibi;
/**
* Reflection metadata class for a table or result set column.
*
* @property-read string $name
* @property-read string $fullName
* @property-read Table $table
* @property-read string $type
* @property-read mixed $nativeType
* @property-read int|null $size
* @property-read bool $nullable
* @property-read bool $autoIncrement
* @property-read mixed $default
*/
class Column
{
use Dibi\Strict;
/** @var Dibi\Reflector|null when created by Result */
private $reflector;
/** @var array (name, nativetype, [table], [fullname], [size], [nullable], [default], [autoincrement], [vendor]) */
private $info;
public function __construct(?Dibi\Reflector $reflector, array $info)
{
$this->reflector = $reflector;
$this->info = $info;
}
public function getName(): string
{
return $this->info['name'];
}
public function getFullName(): string
{
return $this->info['fullname'] ?? null;
}
public function hasTable(): bool
{
return !empty($this->info['table']);
}
public function getTable(): Table
{
if (empty($this->info['table']) || !$this->reflector) {
throw new Dibi\Exception('Table is unknown or not available.');
}
return new Table($this->reflector, ['name' => $this->info['table']]);
}
public function getTableName(): ?string
{
return isset($this->info['table']) && $this->info['table'] != null // intentionally ==
? $this->info['table']
: null;
}
public function getType(): ?string
{
return Dibi\Helpers::getTypeCache()->{$this->info['nativetype']};
}
public function getNativeType(): string
{
return $this->info['nativetype'];
}
public function getSize(): ?int
{
return isset($this->info['size']) ? (int) $this->info['size'] : null;
}
public function isNullable(): bool
{
return !empty($this->info['nullable']);
}
public function isAutoIncrement(): bool
{
return !empty($this->info['autoincrement']);
}
/** @return mixed */
public function getDefault()
{
return $this->info['default'] ?? null;
}
/** @return mixed */
public function getVendorInfo(string $key)
{
return $this->info['vendor'][$key] ?? null;
}
}