Browse Source

Consistent Expression API.

euromark 11 years ago
parent
commit
680a559135

+ 3 - 3
src/Database/Dialect/TupleComparisonTranslatorTrait.php

@@ -62,7 +62,7 @@ trait TupleComparisonTranslatorTrait {
 				$value->andWhere([$field . " $op" => new IdentifierExpression($selected[$i])]);
 			}
 			$value->select($true, true);
-			$expression->field($true);
+			$expression->setField($true);
 			$expression->setOperator('=');
 			return;
 		}
@@ -84,8 +84,8 @@ trait TupleComparisonTranslatorTrait {
 			});
 		}
 
-		$expression->field($true);
-		$expression->value($surrogate);
+		$expression->setField($true);
+		$expression->setValue($surrogate);
 		$expression->setOperator('=');
 	}
 

+ 22 - 11
src/Database/Expression/Comparison.php

@@ -60,8 +60,8 @@ class Comparison implements ExpressionInterface, FieldInterface {
  * @param string $operator the operator used for comparing field and value
  */
 	public function __construct($field, $value, $type, $operator) {
-		$this->field($field);
-		$this->value($value);
+		$this->setField($field);
+		$this->setValue($value);
 		$this->_operator = $operator;
 
 		if (is_string($type)) {
@@ -74,27 +74,29 @@ class Comparison implements ExpressionInterface, FieldInterface {
  *
  * @param mixed $value The value to compare
  * @return void
+ * @deprecated 3.0.0 Will be removed in 3.0.0 stable. Use setValue() instead.
  */
 	public function value($value) {
-		$this->_value = $value;
+		return $this->setValue($value);
 	}
 
 /**
- * Returns the value used for comparison
+ * Sets the value
  *
- * @return mixed
+ * @param mixed $value The value to compare
+ * @return void
  */
-	public function getValue() {
-		return $this->_value;
+	public function setValue($value) {
+		$this->_value = $value;
 	}
 
 /**
- * Returns the operator used for comparison
+ * Returns the value used for comparison
  *
- * @return string
+ * @return mixed
  */
-	public function getOperator() {
-		return $this->_operator;
+	public function getValue() {
+		return $this->_value;
 	}
 
 /**
@@ -108,6 +110,15 @@ class Comparison implements ExpressionInterface, FieldInterface {
 	}
 
 /**
+ * Returns the operator used for comparison
+ *
+ * @return string
+ */
+	public function getOperator() {
+		return $this->_operator;
+	}
+
+/**
  * Convert the expression into a SQL fragment.
  *
  * @param \Cake\Database\ValueBinder $generator Placeholder generator object

+ 9 - 0
src/Database/Expression/FieldInterface.php

@@ -27,10 +27,19 @@ interface FieldInterface {
  *
  * @param string $field The field to compare with.
  * @return void
+ * @deprecated 3.0.0 Will be removed in 3.0.0 stable. Use setField() instead.
  */
 	public function field($field);
 
 /**
+ * Sets the field name
+ *
+ * @param string $field The field to compare with.
+ * @return void
+ */
+	public function setField($field);
+
+/**
  * Returns the field name
  *
  * @return string|\Cake\Database\ExpressionInterface

+ 11 - 0
src/Database/Expression/FieldTrait.php

@@ -36,8 +36,19 @@ trait FieldTrait {
  *
  * @param string $field The field to compare with.
  * @return void
+ * @deprecated 3.0.0 Will be removed in 3.0.0 stable. Use setField() instead.
  */
 	public function field($field) {
+		$this->setField($field);
+	}
+
+/**
+ * Sets the field name
+ *
+ * @param string $field The field to compare with.
+ * @return void
+ */
+	public function setField($field) {
 		$this->_field = $field;
 	}
 

+ 2 - 2
src/Database/IdentifierQuoter.php

@@ -182,13 +182,13 @@ class IdentifierQuoter {
 	protected function _quoteComparison(FieldInterface $expression) {
 		$field = $expression->getField();
 		if (is_string($field)) {
-			$expression->field($this->_driver->quoteIdentifier($field));
+			$expression->setField($this->_driver->quoteIdentifier($field));
 		} elseif (is_array($field)) {
 			$quoted = [];
 			foreach ($field as $f) {
 				$quoted[] = $this->_driver->quoteIdentifier($f);
 			}
-			$expression->field($quoted);
+			$expression->setField($quoted);
 		} elseif ($field instanceof ExpressionInterface) {
 			$this->quoteExpression($field);
 		}

+ 1 - 1
src/Database/SqlDialectTrait.php

@@ -174,7 +174,7 @@ trait SqlDialectTrait {
 				$field = $condition->getField();
 				if (strpos($field, '.') !== false) {
 					list(, $field) = explode('.', $field);
-					$condition->field($field);
+					$condition->setField($field);
 				}
 				return $condition;
 			});