/** * @param mixed $data * @param array $keys * * @return bool */ public function hasValue($data, $keys) { if ($this->isKeysEmpty($keys)) { return true; } if (!is_array($keys)) { $keys = [$keys]; } $accessor = new Accessor($data); $keyCount = count($keys); $depth = 0; foreach ($keys as $key) { if ($depth + 1 === $keyCount && $accessor->has($key) === false || $accessor->to($key) === false) { return false; } ++$depth; } return true; }
/** * @test * @covers Cocur\Vale\Accessor::has() */ public function hasReturnsFalseIfObjectHasIsAndReturnsFalse() { eval('class AccessorTestMockHasReturnsFalseIfObjectHasIsAndReturnsFalse { public function is() { return false;} }'); $obj = new \AccessorTestMockHasReturnsFalseIfObjectHasIsAndReturnsFalse(); $accessor = new Accessor($obj); $this->assertFalse($accessor->has('level1')); }