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.
65 lines
1.1 KiB
65 lines
1.1 KiB
4 years ago
|
<?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]) && $payload[$key] !== $value) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|