CakePHP
  • Documentation
    • Book
    • API
    • Videos
    • Logos & Trademarks
  • Business Solutions
  • Swag
  • Road Trip
  • Team
  • Community
    • Community
    • Team
    • Issues (Github)
    • YouTube Channel
    • Get Involved
    • Bakery
    • Featured Resources
    • Newsletter
    • Certification
    • My CakePHP
    • CakeFest
    • Facebook
    • Twitter
    • Help & Support
    • Forum
    • Stack Overflow
    • IRC
    • Slack
    • Paid Support
CakePHP

C CakePHP 3.8 Red Velvet API

  • Overview
  • Tree
  • Deprecated
  • Version:
    • 3.8
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

Namespaces

  • Cake
    • Auth
      • Storage
    • Cache
      • Engine
    • Collection
      • Iterator
    • Command
    • Console
      • Exception
    • Controller
      • Component
      • Exception
    • Core
      • Configure
        • Engine
      • Exception
      • Retry
    • Database
      • Driver
      • Exception
      • Expression
      • Schema
      • Statement
      • Type
    • Datasource
      • Exception
    • Error
      • Middleware
    • Event
      • Decorator
    • Filesystem
    • Form
    • Http
      • Client
        • Adapter
        • Auth
      • Cookie
      • Exception
      • Middleware
      • Session
    • I18n
      • Formatter
      • Middleware
      • Parser
    • Log
      • Engine
    • Mailer
      • Exception
      • Transport
    • Network
      • Exception
    • ORM
      • Association
      • Behavior
        • Translate
      • Exception
      • Locator
      • Rule
    • Routing
      • Exception
      • Filter
      • Middleware
      • Route
    • Shell
      • Helper
      • Task
    • TestSuite
      • Fixture
      • Stub
    • Utility
      • Exception
    • Validation
    • View
      • Exception
      • Form
      • Helper
      • Widget
  • None

Classes

  • BufferedIterator
  • ExtractIterator
  • FilterIterator
  • InsertIterator
  • MapReduce
  • NestIterator
  • NoChildrenIterator
  • ReplaceIterator
  • SortIterator
  • TreeIterator
  • TreePrinter
  • ZipIterator

Class MapReduce

Implements a simplistic version of the popular Map-Reduce algorithm. Acts like an iterator for the original passed data after each result has been processed, thus offering a transparent wrapper for results coming from any source.

Cake\Collection\Iterator\MapReduce implements IteratorAggregate
Namespace: Cake\Collection\Iterator
Location: Collection/Iterator/MapReduce.php

Properties summary

  • $_counter protected
    integer
    Count of elements emitted during the Reduce phase
  • $_data protected
    Traversable|null
    Holds the original data that needs to be processed
  • $_executed protected
    boolean
    Whether the Map-Reduce routine has been executed already on the data
  • $_intermediate protected
    array

    Holds the shuffled results that were emitted from the map phase

  • $_mapper protected
    callable
    A callable that will be executed for each record in the original data
  • $_reducer protected
    callable|null

    A callable that will be executed for each intermediate record emitted during the Map phase

  • $_result protected
    array
    Holds the results as emitted during the reduce phase

Method Summary

  • __construct() public
    Constructor
  • _execute() protected

    Runs the actual Map-Reduce algorithm. This is iterate the original data and call the mapper function for each , then for each intermediate bucket created during the Map phase call the reduce function.

  • emit() public

    Appends a new record to the final list of results and optionally assign a key for this record.

  • emitIntermediate() public

    Appends a new record to the bucket labelled with $key, usually as a result of mapping a single record from the original data.

  • getIterator() public

    Returns an iterator with the end result of running the Map and Reduce phases on the original data

Method Detail

__construct() public ¶

__construct( Traversable $data , callable $mapper , callable $reducer = null )

Constructor

Example:

Separate all unique odd and even numbers in an array

$data = new \ArrayObject([1, 2, 3, 4, 5, 3]);
 $mapper = function ($value, $key, $mr) {
     $type = ($value % 2 === 0) ? 'even' : 'odd';
     $mr->emitIntermediate($value, $type);
 };

 $reducer = function ($numbers, $type, $mr) {
     $mr->emit(array_unique($numbers), $type);
 };
 $results = new MapReduce($data, $mapper, $reducer);

Previous example will generate the following result:

['odd' => [1, 3, 5], 'even' => [2, 4]]
Parameters
Traversable $data
the original data to be processed
callable $mapper

the mapper callback. This function will receive 3 arguments. The first one is the current value, second the current results key and third is this class instance so you can call the result emitters.

callable $reducer optional null

the reducer callback. This function will receive 3 arguments. The first one is the list of values inside a bucket, second one is the name of the bucket that was created during the mapping phase and third one is an instance of this class.

_execute() protected ¶

_execute( )

Runs the actual Map-Reduce algorithm. This is iterate the original data and call the mapper function for each , then for each intermediate bucket created during the Map phase call the reduce function.

Throws
LogicException

if emitIntermediate was called but no reducer function was provided


emit() public ¶

emit( mixed $val , string|null $key = null )

Appends a new record to the final list of results and optionally assign a key for this record.

Parameters
mixed $val
The value to be appended to the final list of results
string|null $key optional null
and optional key to assign to the value

emitIntermediate() public ¶

emitIntermediate( mixed $val , string $bucket )

Appends a new record to the bucket labelled with $key, usually as a result of mapping a single record from the original data.

Parameters
mixed $val
The record itself to store in the bucket
string $bucket
the name of the bucket where to put the record

getIterator() public ¶

getIterator( )

Returns an iterator with the end result of running the Map and Reduce phases on the original data

Returns
ArrayIterator
Implementation of
IteratorAggregate::getIterator()

Properties detail

$_counter ¶

protected integer

Count of elements emitted during the Reduce phase

$_data ¶

protected Traversable|null

Holds the original data that needs to be processed

$_executed ¶

protected boolean

Whether the Map-Reduce routine has been executed already on the data

false

$_intermediate ¶

protected array

Holds the shuffled results that were emitted from the map phase

[]

$_mapper ¶

protected callable

A callable that will be executed for each record in the original data

$_reducer ¶

protected callable|null

A callable that will be executed for each intermediate record emitted during the Map phase

$_result ¶

protected array

Holds the results as emitted during the reduce phase

[]
Follow @CakePHP
#IRC
OpenHub
Rackspace
  • Business Solutions
  • Showcase
  • Documentation
  • Book
  • API
  • Videos
  • Logos & Trademarks
  • Community
  • Team
  • Issues (Github)
  • YouTube Channel
  • Get Involved
  • Bakery
  • Featured Resources
  • Newsletter
  • Certification
  • My CakePHP
  • CakeFest
  • Facebook
  • Twitter
  • Help & Support
  • Forum
  • Stack Overflow
  • IRC
  • Slack
  • Paid Support

Generated using CakePHP API Docs