You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This file is part of the overtrue/wechat.
|
|
|
|
*
|
|
|
|
* (c) overtrue <i@overtrue.me>
|
|
|
|
*
|
|
|
|
* This source file is subject to the MIT license that is bundled
|
|
|
|
* with this source code in the file LICENSE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace EasyWeChat\Kernel\Clauses;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class Clause.
|
|
|
|
*
|
|
|
|
* @author mingyoung <mingyoungcheung@gmail.com>
|
|
|
|
*/
|
|
|
|
class Clause
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @var array
|
|
|
|
*/
|
|
|
|
protected $clauses = [
|
|
|
|
'where' => [],
|
|
|
|
];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param mixed ...$args
|
|
|
|
*
|
|
|
|
* @return $this
|
|
|
|
*/
|
|
|
|
public function where(...$args)
|
|
|
|
{
|
|
|
|
array_push($this->clauses['where'], $args);
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param mixed $payload
|
|
|
|
*
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
public function intercepted($payload)
|
|
|
|
{
|
|
|
|
return (bool) $this->interceptWhereClause($payload);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param mixed $payload
|
|
|
|
*
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
protected function interceptWhereClause($payload)
|
|
|
|
{
|
|
|
|
foreach ($this->clauses['where'] as $item) {
|
|
|
|
list($key, $value) = $item;
|
|
|
|
|
|
|
|
if (!isset($payload[$key])) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (is_array($value) && !in_array($payload[$key], $value)) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!is_array($value) && $payload[$key] !== $value) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|