<?php
/**
 * test-pluck.php
 *
 * USAGE:
 *
 *   Place into wordpress install folder, then 
 *   request it via the browser.
 *
 * @see http://core.trac.wordpress.org/ticket/16895
 */
error_reporting(-1); ini_set('display_errors', 1);

require dirname(__FILE__) . '/wp-load.php';

class NumClass {
	public $num;
	public function __construct() {
		$this->num = 1;
	}
	public function setRef(&$ref) {
		$this->num = &$ref;
	}
}

$value_one = 1;
$obj_one = new NumClass();
$obj_one_ref = new NumClass();
$obj_one_ref->setRef($value_one);

$array_one = array('num' => $value_one);
$array_two = array('num' => 2);
$array_one_ref = array('num' => &$value_one );

$list_array = array(
	$array_one,
	$array_two
);

$list_array_ref = array(
	&$array_one,
	&$array_one
);

$list_array_ref_ref = array(
	&$array_one_ref,
	&$array_one_ref
);

$list_obj = array(
	$obj_one,
	$obj_one
);

$list_obj_ref = array(
	&$obj_one,
	&$obj_one
);


$list_obj_ref_ref = array(
	&$obj_one_ref,
	&$obj_one_ref
);


$tests = array(
	'Arrays w/o Refernces' => $list_array,
	'Arrays with References' => $list_array_ref,
	'Arrays with References and Referenced Values' => $list_array_ref_ref,
	'Objects with References and Referenced Values' => $list_obj_ref_ref,
	'Objects with References' => $list_obj_ref,
	'Objects' => $list_obj,
);


foreach($tests as $label => $test) {
	echo $label, ":<br>\n";
	$value_one = 1;
	var_dump($test);
	$nums = wp_list_pluck($test, 'num');
	$value_one = 11;	
	var_dump($nums);
	unset($nums);
	echo '<hr>';
}
