1--TEST-- 2Test array_key_exists() function : object functionality - different visibilities 3--FILE-- 4<?php 5/* Prototype : bool array_key_exists(mixed $key, array $search) 6 * Description: Checks if the given key or index exists in the array 7 * Source code: ext/standard/array.c 8 * Alias to functions: key_exists 9 */ 10 11/* 12 * Pass array_key_exists() an object with private and protected properties 13 */ 14 15echo "*** Testing array_key_exists() : object functionality ***\n"; 16 17class myClass { 18 public $var1; 19 protected $var2; 20 private $var3; 21 22 function __construct($a, $b, $c = null) { 23 $this->var1 = $a; 24 $this->var2 = $b; 25 if (!is_null($c)) { 26 $this->var3 = $c; 27 } 28 } 29} 30 31echo "\n-- Do not assign a value to \$class1->var3 --\n"; 32$class1 = new myClass ('a', 'b'); 33echo "\$key = var1:\n"; 34var_dump(array_key_exists('var1', $class1)); 35echo "\$key = var2:\n"; 36var_dump(array_key_exists('var2', $class1)); 37echo "\$key = var3:\n"; 38var_dump(array_key_exists('var3', $class1)); 39echo "\$class1:\n"; 40var_dump($class1); 41 42echo "\n-- Assign a value to \$class2->var3 --\n"; 43$class2 = new myClass('x', 'y', 'z'); 44echo "\$key = var3:\n"; 45var_dump(array_key_exists('var3', $class2)); 46echo "\$class2:\n"; 47var_dump($class2); 48 49echo "Done"; 50?> 51--EXPECTF-- 52*** Testing array_key_exists() : object functionality *** 53 54-- Do not assign a value to $class1->var3 -- 55$key = var1: 56 57Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d 58bool(true) 59$key = var2: 60 61Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d 62bool(false) 63$key = var3: 64 65Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d 66bool(false) 67$class1: 68object(myClass)#1 (3) { 69 ["var1"]=> 70 string(1) "a" 71 ["var2":protected]=> 72 string(1) "b" 73 ["var3":"myClass":private]=> 74 NULL 75} 76 77-- Assign a value to $class2->var3 -- 78$key = var3: 79 80Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d 81bool(false) 82$class2: 83object(myClass)#2 (3) { 84 ["var1"]=> 85 string(1) "x" 86 ["var2":protected]=> 87 string(1) "y" 88 ["var3":"myClass":private]=> 89 string(1) "z" 90} 91Done 92