@@ -34,6 +34,27 @@ public function getObject(ColumnInterface $column)
3434 }
3535 }
3636
37+ public function setObject (ColumnInterface $ column , $ value )
38+ {
39+ switch ($ column ->getType ()) {
40+ case FieldType::INTEGER :
41+ return $ this ->setInt ($ column , $ value );
42+ case FieldType::DOUBLE :
43+ return $ this ->setDouble ($ column , $ value );
44+ case FieldType::DATETIME :
45+ return $ this ->setDateTime ($ column , $ value );
46+ case FieldType::CURRENCY :
47+ return $ this ->setCurrency ($ column , $ value );
48+ case FieldType::FLOAT :
49+ return $ this ->setFloat ($ column , $ value );
50+ case FieldType::VAR_FIELD :
51+ case FieldType::VARBINARY :
52+ return $ this ->setVarchar ($ column , $ value );
53+ default :
54+ return parent ::setObject ($ column , $ value );
55+ }
56+ }
57+
3758 public function getGeneral (string $ columnName )
3859 {
3960 $ data = unpack ('L ' , $ this ->choppedData [$ columnName ]);
@@ -67,6 +88,26 @@ public function getInt(string $columnName)
6788 return $ ret ;
6889 }
6990
91+ /**
92+ * @param $value
93+ *
94+ * @return bool
95+ */
96+ public function setInt (ColumnInterface $ column , $ value )
97+ {
98+ if (FieldType::INTEGER !== $ column ->getType ()) {
99+ trigger_error ($ column ->getName ().' is not a Number column ' , E_USER_ERROR );
100+ }
101+
102+ if (0 == strlen ($ value )) {
103+ $ this ->forceSetString ($ column , '' );
104+ return false ;
105+ }
106+
107+ $ value = str_replace (', ' , '. ' , $ value );
108+ $ this ->forceSetString ($ column , number_format ($ value , $ column ->getDecimalCount (), '. ' , '' ));
109+ }
110+
70111 /**
71112 * @return int
72113 */
@@ -83,6 +124,13 @@ public function getDouble(string $columnName)
83124 return 0 ;
84125 }
85126
127+ public function setDouble (ColumnInterface $ column , $ value ): self
128+ {
129+ //todo
130+
131+ return $ this ;
132+ }
133+
86134 public function getCurrency (string $ columnName )
87135 {
88136 $ s = $ this ->choppedData [$ columnName ];
@@ -96,6 +144,13 @@ public function getCurrency(string $columnName)
96144 return 0 ;
97145 }
98146
147+ private function setCurrency (ColumnInterface $ column , $ value ): self
148+ {
149+ //todo
150+
151+ return $ this ;
152+ }
153+
99154 public function getVarchar (string $ columnName )
100155 {
101156 $ s = $ this ->forceGetString ($ columnName );
@@ -105,6 +160,13 @@ public function getVarchar(string $columnName)
105160 return $ s ;
106161 }
107162
163+ private function setVarchar (ColumnInterface $ column , $ value ): self
164+ {
165+ //todo
166+
167+ return $ this ;
168+ }
169+
108170 public function getVarbinary (string $ columnName )
109171 {
110172 $ s = $ this ->forceGetString ($ columnName );
@@ -121,7 +183,7 @@ public function getVarbinary(string $columnName)
121183 */
122184 public function setDateTime (ColumnInterface $ column , $ value )
123185 {
124- if (FieldType::DATETIME != $ column ->getType ()) {
186+ if (FieldType::DATETIME !== $ column ->getType ()) {
125187 trigger_error ($ column ->getName ().' is not a DateTime column ' , E_USER_ERROR );
126188 }
127189
@@ -148,7 +210,7 @@ public function setDateTime(ColumnInterface $column, $value)
148210 */
149211 public function setFloat (ColumnInterface $ column , $ value )
150212 {
151- if (FieldType::FLOAT != $ column ->getType ()) {
213+ if (FieldType::FLOAT !== $ column ->getType ()) {
152214 trigger_error ($ column ->getName ().' is not a Float column ' , E_USER_ERROR );
153215 }
154216
@@ -161,26 +223,6 @@ public function setFloat(ColumnInterface $column, $value)
161223 $ this ->forceSetString ($ column , $ value );
162224 }
163225
164- /**
165- * @param $value
166- *
167- * @return bool
168- */
169- public function setInt (ColumnInterface $ column , $ value )
170- {
171- if (FieldType::NUMERIC != $ column ->getType ()) {
172- trigger_error ($ column ->getName ().' is not a Number column ' , E_USER_ERROR );
173- }
174-
175- if (0 == strlen ($ value )) {
176- $ this ->forceSetString ($ column , '' );
177- return false ;
178- }
179-
180- $ value = str_replace (', ' , '. ' , $ value );
181- $ this ->forceSetString ($ column , number_format ($ value , $ column ->getDecimalCount (), '. ' , '' ));
182- }
183-
184226 /**
185227 * @return bool|float|int
186228 */
0 commit comments