PHP.mk документација

Траверзабилно

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

class.traversable.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека class.traversable.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Траверзабилно

Референца за `class.traversable.php` со подобрена типографија и навигација.

class.traversable.php

На Траверзабилно interface

класата mysqli_driver

Вовед

Интерфејс за откривање дали една класа е преминлива со користење foreach.

Апстрактен базен интерфејс што не може да се имплементира сам. Наместо тоа, мора да биде имплементиран од било кој IteratorAggregate or Итератор.

Синопсис на интерфејсот

interface Траверзабилно {
}

Овој интерфејс нема методи, неговата единствена цел е да биде базен интерфејс за сите преминливи класи.

Дневник на промени

Верзија = NULL
7.4.0 На Траверзабилно интерфејсот сега може да биде имплементиран од апстрактни класи. Класите што се протегаат мора да имплементираат Итератор or IteratorAggregate.

Белешки

Забелешка:

Внатрешни (вградени) класи што го имплементираат овој интерфејс може да се користат во foreach конструкција и не треба да имплементираат IteratorAggregate or Итератор.

Забелешка:

Пред PHP 7.4.0, овој внатрешен интерфејс на моторот не можеше да се имплементира во PHP скрипти. Или IteratorAggregate or Итератор мора да се користи наместо тоа.

Белешки од корисници 4 белешки

кевинпено на gmail точка ком
пред 15 години
While you cannot implement this interface, you can use it in your checks to determine if something is usable in for each. Here is what I use if I'm expecting something that must be iterable via foreach.

<?php
    if( !is_array( $items ) && !$items instanceof Traversable )
        //Throw exception here
?>
cobaltbluedw
пред 10 години
NOTE:  While objects and arrays can be traversed by foreach, they do NOT implement "Traversable", so you CANNOT check for foreach compatibility using an instanceof check.

Example:

$myarray = array('one', 'two', 'three');
$myobj = (object)$myarray;

if ( !($myarray instanceof \Traversable) ) {
    print "myarray is NOT Traversable";
}
if ( !($myobj instanceof \Traversable) ) {
    print "myobj is NOT Traversable";
}

foreach ($myarray as $value) {
    print $value;
}
foreach ($myobj as $value) {
    print $value;
}

Output:
myarray is NOT Traversable
myobj is NOT Traversable
one
two
three
one
two
three
даглас на reith точка ком точка ау
пред 8 години
The PHP7 iterable pseudo type will match both Traversable and array. Great for return type-hinting so that you do not have to expose your Domain to Infrastructure code, e.g. instead of a Repository returning a Cursor, it can return hint 'iterable':
<?php
UserRepository::findUsers(): iterable
?>

Link: http://php.net/manual/en/migration71.new-features.php#migration71.new-features.iterable-pseudo-type

Also, instead of:
<?php
    if( !is_array( $items ) && !$items instanceof Traversable )
        //Throw exception here
?>

You can now do with the is_iterable() method:
<?php
    if ( !is_iterable( $items ))
        //Throw exception here
?>

Link:  http://php.net/manual/en/function.is-iterable.php
ајф на ајф точка ме
пред 11 години
Note that all objects can be iterated over with foreach anyway and it'll go over each property. This just describes whether or not the class implements an iterator, i.e. has custom behaviour.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.