@ 2015-12-23T02:55:53Z <?php declare(strict_types = 1);
namespace Acme {
class Collection {
private $_items;
public function __construct(array $items = [])/*: void*/ {
$this->_items = $items;
}
public function filter(callable $callback): self {
foreach ($this->_items as $key => $value) {
if (!call_user_func($callback, $value)) {
unset($this->_items[$key]);
}
}
return $this;
}
public function map(callable $callback): self {
foreach ($this->_items as $key => $value) {
$this->_items[$key] = call_user_func($callback, $key, $value);
}
return $this;
}
public function reindex(): self {
$this->_items = array_values($this->_items);
return $this;
}
public function sprintf(string $format): self {
return $this->map(function ($key, $value) use ($format) {
return substr_count($format, '%s') === 1
? sprintf($format, $value)
: sprintf($format, $key, $value);
});
}
public function keys(): self {
$this->_items = array_keys($this->_items);
return $this;
}
public function implode(string $delimiter = ''): string {
$output = '';
$first = TRUE;
foreach ($this->_items as $value) {
if ($first) {
$output .= $value;
$first = FALSE;
} else {
$output .= "$delimiter$value";
}
}
return $output;
}
public static function property(string $property): callable {
return function ($key, $value) use ($property) {
return $value->$property;
};
}
}
}
namespace {
use Acme\Collection;
echo (new Collection([
'one',
'two',
(object)['foo' => 'FOO', 'bar' => 'BAR', 'baz' => 'BAZ'],
'three',
(object)['bar' => 'BAR', 'qux' => 'QUX'],
]))
->filter('is_object')
->map(Collection::property('bar'))
//->reindex()
->keys()
//->sprintf('(%s,%s)')
->implode('_');
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.0.0 - 7.0.20 , 7.1.0 - 7.1.20 , 7.2.0 - 7.2.33 , 7.3.16 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.6 2_4 Output for 5.5.24 - 5.5.35 , 5.6.8 - 5.6.28 Warning: Unsupported declare 'strict_types' in /in/A53mi on line 1
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/A53mi on line 9
Process exited with code 255 . preferences:dark mode live preview
188.96 ms | 402 KiB | 183 Q