12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <?php
- namespace App\Model;
- use Closure;
- class DBClause
- {
- private $identify;
- public function __construct()
- {
- $this->identify = "";
- }
- public function on($first, $operator = null, $second = null, $boolean = 'and')
- {
- $identify = $this->addEncode($first);
- $identify.= $this->addEncode($operator);
- $identify.= $this->addEncode($second);
- $identify.= $this->addEncode($boolean);
- $this->identify.= $identify;
- }
- public function orOn($first, $operator = null, $second = null)
- {
- $this->on($first, $operator, $second, 'or');
- }
- public function toString()
- {
- return $this->identify;
- }
- private function addEncode($value)
- {
- $encodeName = '';
- if (is_array($value)) {
- ksort($value);
- foreach ($value AS $key => $val) {
- $encodeName .= ':' . $key . '=' . $this->addEncode($val) . ';';
- }
- } elseif ($value instanceof Closure) {
- $join = new DBClause();
- call_user_func($value, $join);
- $encodeName .= ':' . $join->toString() . ';';
- } elseif (is_string($value) || is_numeric($value)) {
- $encodeName .= ':' . $value . ';';
- } else {
- $encodeName .= ':' . var_export($value, true) . ';';
- }
- return $encodeName;
- }
- }
|