本文整理汇总了PHP中AppendIterator::valid方法的典型用法代码示例。如果您正苦于以下问题:PHP AppendIterator::valid方法的具体用法?PHP AppendIterator::valid怎么用?PHP AppendIterator::valid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AppendIterator
的用法示例。
在下文中一共展示了AppendIterator::valid方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: lazyAppend
/**
* Lazily append the next iterator to the chain
*/
private function lazyAppend()
{
if (!parent::valid() and $this->iterators->valid()) {
$this->append($this->iterators->current());
$this->iterators->next();
}
}
示例2: valid
/**
* Overrides valid function from parent iterator class to append new iterators on the fly
* once the previous one reached its end.
*
* @return boolean true if there's still more results to be fetched, flase otherwise
**/
public function valid()
{
$valid = parent::valid();
if (!$valid && $this->_current < $this->_totalPages) {
$from = $this->_current * $this->_pageSize;
$query = array('scroll_id' => $this->_scrollId, 'from' => $from, 'size' => $this->_pageSize);
$this->append(new ElasticCursor($this->_source, compact('query') + $this->_options));
$this->_current++;
$valid = true;
}
return $valid;
}
示例3: _eachGetIterator
protected function _eachGetIterator($method, $arg1 = NULL, $arg2 = NULL, $arg3 = NULL)
{
$it = new \AppendIterator();
$arr = array();
foreach ($this as $el) {
$tmp = $el->{$method}($arg1, $arg2, $arg3);
if ($tmp instanceof \Iterator) {
$it->append($tmp);
} else {
$arr[] = $tmp;
}
}
if (!empty($arr)) {
$it->append(new \ArrayIterator($arr));
}
if ($it->valid()) {
return new QuipXmlElementIterator($it);
}
return $this->{'no results'};
}
示例4: valid
function valid()
{
echo __METHOD__ . "\n";
return parent::valid();
}
示例5: AppendIterator
<?php
$a = new AppendIterator();
$a1 = new ArrayIterator([]);
$a2 = new ArrayIterator([1, 2, 3]);
$a->append($a1);
$a->append($a2);
var_dump($a->valid());
var_dump($a->current());
var_dump($a->getIteratorIndex());
// go to the end
for ($a->rewind(); $a->valid(); $a->next()) {
}
$a->append(new ArrayIterator([]));
$a->append(new ArrayIterator([4, 5, 6]));
var_dump($a->valid());
var_dump($a->current());
var_dump($a->getIteratorIndex());
示例6: next
public function next()
{
$this->current = NULL;
if (count($this->currentFileClasses) > 0) {
$this->current = array_shift($this->currentFileClasses);
return;
}
do {
$file = $this->fileIterator->current();
if ($this->fileIterator->valid()) {
$this->fileIterator->next();
}
} while ($file && (!$file->isFile() || isset($this->inspectedFiles[$file->getRealPath()]) || !$this->filter->accept($file)));
if ($file === NULL) {
return;
}
$this->inspectedFiles[$file->getRealPath()] = TRUE;
// We add a new line to the code so that the tokeniser will give us a
// last token item for classes that end on the last line of a file
// without any trailing white space.
$tokens = token_get_all(@file_get_contents($file->getRealPath()) . PHP_EOL);
$depth = -1;
$className = NULL;
$startLine = NULL;
$endLine = NULL;
$isInterface = FALSE;
$dependancys = array();
$getDep = FALSE;
reset($tokens);
do {
$token = current($tokens);
switch ($depth) {
case -1:
if (!is_string($token)) {
list($token, $text, $line) = $token;
switch ($token) {
case T_INTERFACE:
$isInterface = TRUE;
case T_CLASS:
$depth = 0;
$startLine = $line;
$endLine = NULL;
break;
}
}
break;
case 0:
list($token, $text) = $token;
switch ($token) {
case T_STRING:
$className = $text;
$depth = 1;
break;
}
break;
case 1:
if (is_string($token)) {
if ($token == '{') {
$depth = 3;
}
} else {
list($token, $text) = $token;
switch ($token) {
case T_EXTENDS:
$getDep = TRUE;
break;
case T_IMPLEMENTS:
$getDep = TRUE;
break;
case T_STRING:
if ($getDep) {
$dependancys[] = $text;
}
break;
case T_WHITESPACE:
break;
default:
$getDep = FALSE;
break;
}
}
break;
default:
if (is_string($token)) {
switch ($token) {
case '{':
$depth++;
break;
case '}':
$depth--;
break;
}
} else {
list($token, $text, $endLine) = $token;
switch ($token) {
case T_CURLY_OPEN:
case T_DOLLAR_OPEN_CURLY_BRACES:
$depth++;
break;
}
//.........这里部分代码省略.........
示例7: valid
public function valid()
{
return $this->list->valid();
}
示例8: dir_readdir
/**
* Support for readdir().
*
* @return string|bool the next filename, or false if there are no more
* files in the directory
* @see http://www.php.net/manual/en/function.readdir.php
*/
public function dir_readdir()
{
while ($this->_directoryIterator->valid()) {
$key = $this->_directoryIterator->key();
$current = $this->_directoryIterator->current();
$iterator = $this->_directoryIterator->getInnerIterator();
try {
$this->_directoryIterator->next();
} catch (Services_Amazon_S3_Exception $e) {
return false;
}
if (is_string($current)) {
// Return "." or ".."
return $key;
}
if ($iterator instanceof Services_Amazon_S3_ObjectIterator) {
// Strip prefix and any trailing slash
$key = rtrim(substr($key, strlen($iterator->prefix)), '/');
} else {
// When iterating over buckets, $current is a bucket instance
$key = $current->name;
}
// Subdirectories may be represented in two different ways - make
// sure not to report duplicates
$subdirectory = false;
if (substr($key, -9) == '_$folder$') {
$subdirectory = $key = substr($key, 0, -9);
} elseif ($current instanceof Services_Amazon_S3_Prefix) {
$subdirectory = $key;
}
if ($subdirectory) {
if (!in_array($key, $this->_subdirectories)) {
$this->_subdirectories[] = $key;
return $key;
}
} else {
return $key;
}
}
return false;
}
示例9: valid
/**
* Returns whether the current iterator value is valid
*
* @return boolean
*/
public function valid()
{
return $this->inputs->valid();
}
示例10: ArrayIterator
[expect php]
[file]
<?php
$pizzas = new ArrayIterator(array('Margarita', 'Siciliana', 'Hawaii'));
$toppings = new ArrayIterator(array('Cheese', 'Anchovies', 'Olives', 'Pineapple', 'Ham'));
$appendIterator = new AppendIterator();
$appendIterator->append($pizzas);
$appendIterator->append($toppings);
foreach ($appendIterator as $key => $item) {
echo "{$key} => {$item}", PHP_EOL;
}
$appendIterator->append($toppings);
while ($appendIterator->valid()) {
echo $appendIterator->key() . " => " . $appendIterator->current() . "\n";
$appendIterator->next();
}
示例11: valid
/**
* @see http://php.net/manual/en/class.iterator.php#96691
* @return bool
*/
public function valid()
{
return $this->_appendIterator->valid();
}
示例12: testResultsetAppendIterator
public function testResultsetAppendIterator()
{
if (!$this->_prepareTestMysql()) {
$this->markTestSkipped("Skipped");
return;
}
// see http://php.net/manual/en/appenditerator.construct.php
$iterator = new \AppendIterator();
$robots_first = Robots::find(array('limit' => 2));
$robots_second = Robots::find(array('limit' => 1, 'offset' => 2));
$robots_first_0 = $robots_first[0];
$robots_first_1 = $robots_first[1];
$robots_second_0 = $robots_second[0];
$iterator->append($robots_first);
$iterator->append($robots_second);
$iterator->rewind();
$this->assertTrue($iterator->valid());
$this->assertEquals($iterator->key(), 0);
$this->assertEquals($iterator->getIteratorIndex(), 0);
$this->assertEquals(get_class($iterator->current()), 'Robots');
$this->assertEquals($robots_first_0->name, $iterator->current()->name);
$iterator->next();
$this->assertTrue($iterator->valid());
$this->assertEquals($iterator->key(), 1);
$this->assertEquals($iterator->getIteratorIndex(), 0);
$this->assertEquals(get_class($iterator->current()), 'Robots');
$this->assertEquals($robots_first_1->name, $iterator->current()->name);
$iterator->next();
$this->assertTrue($iterator->valid());
$this->assertEquals($iterator->key(), 0);
$this->assertEquals($iterator->getIteratorIndex(), 1);
$this->assertEquals(get_class($iterator->current()), 'Robots');
$this->assertEquals($robots_second_0->name, $iterator->current()->name);
$iterator->next();
$this->assertFalse($iterator->valid());
}