| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 | 
							- <?php
 
- /**
 
-  * @link http://www.yiiframework.com/
 
-  * @copyright Copyright (c) 2008 Yii Software LLC
 
-  * @license http://www.yiiframework.com/license/
 
-  */
 
- namespace yii\db;
 
- use yii\base\BaseObject;
 
- use yii\helpers\StringHelper;
 
- /**
 
-  * ColumnSchema class describes the metadata of a column in a database table.
 
-  *
 
-  * @author Qiang Xue <qiang.xue@gmail.com>
 
-  * @since 2.0
 
-  */
 
- class ColumnSchema extends BaseObject
 
- {
 
-     /**
 
-      * @var string name of this column (without quotes).
 
-      */
 
-     public $name;
 
-     /**
 
-      * @var bool whether this column can be null.
 
-      */
 
-     public $allowNull;
 
-     /**
 
-      * @var string abstract type of this column. Possible abstract types include:
 
-      * char, string, text, boolean, smallint, integer, bigint, float, decimal, datetime,
 
-      * timestamp, time, date, binary, and money.
 
-      */
 
-     public $type;
 
-     /**
 
-      * @var string the PHP type of this column. Possible PHP types include:
 
-      * `string`, `boolean`, `integer`, `double`, `array`.
 
-      */
 
-     public $phpType;
 
-     /**
 
-      * @var string the DB type of this column. Possible DB types vary according to the type of DBMS.
 
-      */
 
-     public $dbType;
 
-     /**
 
-      * @var mixed default value of this column
 
-      */
 
-     public $defaultValue;
 
-     /**
 
-      * @var array enumerable values. This is set only if the column is declared to be an enumerable type.
 
-      */
 
-     public $enumValues;
 
-     /**
 
-      * @var int display size of the column.
 
-      */
 
-     public $size;
 
-     /**
 
-      * @var int precision of the column data, if it is numeric.
 
-      */
 
-     public $precision;
 
-     /**
 
-      * @var int scale of the column data, if it is numeric.
 
-      */
 
-     public $scale;
 
-     /**
 
-      * @var bool whether this column is a primary key
 
-      */
 
-     public $isPrimaryKey;
 
-     /**
 
-      * @var bool whether this column is auto-incremental
 
-      */
 
-     public $autoIncrement = false;
 
-     /**
 
-      * @var bool whether this column is unsigned. This is only meaningful
 
-      * when [[type]] is `smallint`, `integer` or `bigint`.
 
-      */
 
-     public $unsigned;
 
-     /**
 
-      * @var string comment of this column. Not all DBMS support this.
 
-      */
 
-     public $comment;
 
-     /**
 
-      * Converts the input value according to [[phpType]] after retrieval from the database.
 
-      * If the value is null or an [[Expression]], it will not be converted.
 
-      * @param mixed $value input value
 
-      * @return mixed converted value
 
-      */
 
-     public function phpTypecast($value)
 
-     {
 
-         return $this->typecast($value);
 
-     }
 
-     /**
 
-      * Converts the input value according to [[type]] and [[dbType]] for use in a db query.
 
-      * If the value is null or an [[Expression]], it will not be converted.
 
-      * @param mixed $value input value
 
-      * @return mixed converted value. This may also be an array containing the value as the first element
 
-      * and the PDO type as the second element.
 
-      */
 
-     public function dbTypecast($value)
 
-     {
 
-         // the default implementation does the same as casting for PHP, but it should be possible
 
-         // to override this with annotation of explicit PDO type.
 
-         return $this->typecast($value);
 
-     }
 
-     /**
 
-      * Converts the input value according to [[phpType]] after retrieval from the database.
 
-      * If the value is null or an [[Expression]], it will not be converted.
 
-      * @param mixed $value input value
 
-      * @return mixed converted value
 
-      * @since 2.0.3
 
-      */
 
-     protected function typecast($value)
 
-     {
 
-         if ($value === ''
 
-             && !in_array(
 
-                 $this->type,
 
-                 [
 
-                     Schema::TYPE_TEXT,
 
-                     Schema::TYPE_STRING,
 
-                     Schema::TYPE_BINARY,
 
-                     Schema::TYPE_CHAR
 
-                 ],
 
-                 true)
 
-         ) {
 
-             return null;
 
-         }
 
-         if ($value === null
 
-             || gettype($value) === $this->phpType
 
-             || $value instanceof ExpressionInterface
 
-             || $value instanceof Query
 
-         ) {
 
-             return $value;
 
-         }
 
-         if (is_array($value)
 
-             && count($value) === 2
 
-             && isset($value[1])
 
-             && in_array($value[1], $this->getPdoParamTypes(), true)
 
-         ) {
 
-             return new PdoValue($value[0], $value[1]);
 
-         }
 
-         switch ($this->phpType) {
 
-             case 'resource':
 
-             case 'string':
 
-                 if (is_resource($value)) {
 
-                     return $value;
 
-                 }
 
-                 if (is_float($value)) {
 
-                     // ensure type cast always has . as decimal separator in all locales
 
-                     return StringHelper::floatToString($value);
 
-                 }
 
-                 return (string) $value;
 
-             case 'integer':
 
-                 return (int) $value;
 
-             case 'boolean':
 
-                 // treating a 0 bit value as false too
 
-                 // https://github.com/yiisoft/yii2/issues/9006
 
-                 return (bool) $value && $value !== "\0";
 
-             case 'double':
 
-                 return (float) $value;
 
-         }
 
-         return $value;
 
-     }
 
-     /**
 
-      * @return int[] array of numbers that represent possible PDO parameter types
 
-      */
 
-     private function getPdoParamTypes()
 
-     {
 
-         return [\PDO::PARAM_BOOL, \PDO::PARAM_INT, \PDO::PARAM_STR, \PDO::PARAM_LOB, \PDO::PARAM_NULL, \PDO::PARAM_STMT];
 
-     }
 
- }
 
 
  |