]> granicus.if.org Git - php/commitdiff
Remove support for array_key_exists() with objects
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 4 Nov 2019 12:02:28 +0000 (13:02 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 4 Nov 2019 12:10:03 +0000 (13:10 +0100)
12 files changed:
UPGRADING
Zend/zend_execute.c
Zend/zend_object_handlers.c
Zend/zend_object_handlers.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/spl/spl_array.c
ext/spl/tests/bug61347.phpt
ext/standard/array.c
ext/standard/tests/array/array_key_exists.phpt
ext/standard/tests/array/array_key_exists_object1.phpt [deleted file]
ext/standard/tests/array/array_key_exists_object2.phpt [deleted file]

index 0bf9bccf432d5c2ac46db80ff93b51bcc0bd0c04..1412162b6feffad6f4ac20fd69c2db5523887afb 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -41,6 +41,8 @@ PHP 8.0 UPGRADE NOTES
     method, using Closure::fromCallable() or ReflectionMethod::getClosure().
   . Also removed ability to unbind $this from proper closures that contain uses
     of $this.
+  . Removed ability to use array_key_exists() with objects. Use one of isset()
+    or property_exists() instead.
   . Any array that has a number n as its first numeric key will use n+1 for
     its next implicit key. Even if n is negative.
     RFC: https://wiki.php.net/rfc/negative_array_index
index 673840ace5babe1076c133756e1eacf58159c66d..345335b70890cd1a2b4561330049d6ab55bd444d 100644 (file)
@@ -2458,7 +2458,7 @@ str_offset:
        }
 }
 
-static zend_never_inline uint32_t ZEND_FASTCALL zend_array_key_exists_fast(HashTable *ht, zval *key OPLINE_DC EXECUTE_DATA_DC)
+static zend_never_inline zend_bool ZEND_FASTCALL zend_array_key_exists_fast(HashTable *ht, zval *key OPLINE_DC EXECUTE_DATA_DC)
 {
        zend_string *str;
        zend_ulong hval;
@@ -2470,11 +2470,11 @@ try_again:
                        goto num_key;
                }
 str_key:
-               return zend_hash_find_ind(ht, str) != NULL ? IS_TRUE : IS_FALSE;
+               return zend_hash_find_ind(ht, str) != NULL;
        } else if (EXPECTED(Z_TYPE_P(key) == IS_LONG)) {
                hval = Z_LVAL_P(key);
 num_key:
-               return zend_hash_index_find(ht, hval) != NULL ? IS_TRUE : IS_FALSE;
+               return zend_hash_index_find(ht, hval) != NULL;
        } else if (EXPECTED(Z_ISREF_P(key))) {
                key = Z_REFVAL_P(key);
                goto try_again;
@@ -2486,30 +2486,22 @@ num_key:
                goto str_key;
        } else {
                zend_error(E_WARNING, "array_key_exists(): The first argument should be either a string or an integer");
-               return IS_FALSE;
+               return 0;
        }
 }
 
-static zend_never_inline uint32_t ZEND_FASTCALL zend_array_key_exists_slow(zval *subject, zval *key OPLINE_DC EXECUTE_DATA_DC)
+static ZEND_COLD void ZEND_FASTCALL zend_array_key_exists_error(
+               zval *subject, zval *key OPLINE_DC EXECUTE_DATA_DC)
 {
-       if (EXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
-               zend_error(E_DEPRECATED, "array_key_exists(): "
-                       "Using array_key_exists() on objects is deprecated. "
-                       "Use isset() or property_exists() instead");
-
-               HashTable *ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
-               uint32_t result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC);
-               zend_release_properties(ht);
-               return result;
-       } else {
-               if (UNEXPECTED(Z_TYPE_P(key) == IS_UNDEF)) {
-                       ZVAL_UNDEFINED_OP1();
-               }
-               if (UNEXPECTED(Z_TYPE_INFO_P(subject) == IS_UNDEF)) {
-                       ZVAL_UNDEFINED_OP2();
-               }
-               zend_type_error("array_key_exists() expects parameter 2 to be array, %s given", zend_get_type_by_const(Z_TYPE_P(subject)));
-               return IS_NULL;
+       if (Z_TYPE_P(key) == IS_UNDEF) {
+               ZVAL_UNDEFINED_OP1();
+       }
+       if (Z_TYPE_P(subject) == IS_UNDEF) {
+               ZVAL_UNDEFINED_OP2();
+       }
+       if (!EG(exception)) {
+               zend_type_error("array_key_exists() expects parameter 2 to be array, %s given",
+                       zend_get_type_by_const(Z_TYPE_P(subject)));
        }
 }
 
index 492a2d3e1f3275bde4241353e2f45043502f6c05..c73f6019f65a75cab7bcbcff3f6eaabb50220dd4 100644 (file)
@@ -1841,7 +1841,6 @@ ZEND_API HashTable *zend_std_get_properties_for(zend_object *obj, zend_prop_purp
                case ZEND_PROP_PURPOSE_SERIALIZE:
                case ZEND_PROP_PURPOSE_VAR_EXPORT:
                case ZEND_PROP_PURPOSE_JSON:
-               case _ZEND_PROP_PURPOSE_ARRAY_KEY_EXISTS:
                        ht = obj->handlers->get_properties(obj);
                        if (ht && !(GC_FLAGS(ht) & GC_IMMUTABLE)) {
                                GC_ADDREF(ht);
index 713669f2979fea7d7114abe288c728fd9c64dbce..19b7ff993fff5734bbe3a90f41404508ed83064a 100644 (file)
@@ -98,8 +98,6 @@ typedef enum _zend_prop_purpose {
        ZEND_PROP_PURPOSE_VAR_EXPORT,
        /* Used for json_encode(). */
        ZEND_PROP_PURPOSE_JSON,
-       /* array_key_exists(). Not intended for general use! */
-       _ZEND_PROP_PURPOSE_ARRAY_KEY_EXISTS,
        /* Dummy member to ensure that "default" is specified. */
        _ZEND_PROP_PURPOSE_NON_EXHAUSTIVE_ENUM
 } zend_prop_purpose;
index cd4382046332b6cf565c193a17ab6cae036cc0f1..3ba0c41d630d2027b49f1cf9c52ce4cb7117598f 100644 (file)
@@ -6771,7 +6771,7 @@ ZEND_VM_HANDLER(194, ZEND_ARRAY_KEY_EXISTS, CV|TMPVAR|CONST, CV|TMPVAR|CONST)
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -6789,12 +6789,13 @@ ZEND_VM_C_LABEL(array_key_exists_array):
                                ZEND_VM_C_GOTO(array_key_exists_array);
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
        FREE_OP2();
        FREE_OP1();
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
index 75cce58ffaccdfacd985d3b0fff6a64198409a51..f754348bac9dd4b6450e9fcf0133489ba73662aa 100644 (file)
@@ -6180,7 +6180,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CO
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -6198,11 +6198,12 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
 
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -8281,7 +8282,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TM
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -8299,12 +8300,13 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
        zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -10525,7 +10527,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -10543,11 +10545,12 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
 
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -14483,7 +14486,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_C
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -14501,11 +14504,12 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
        zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -15863,7 +15867,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_T
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -15881,12 +15885,13 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
        zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
        zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -17137,7 +17142,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_C
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -17155,11 +17160,12 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
        zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -39657,7 +39663,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -39675,11 +39681,12 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
 
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -43043,7 +43050,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVA
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -43061,12 +43068,13 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
        zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
@@ -47888,7 +47896,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV_HA
 
        zval *key, *subject;
        HashTable *ht;
-       uint32_t result;
+       zend_bool result;
 
        SAVE_OPLINE();
 
@@ -47906,11 +47914,12 @@ array_key_exists_array:
                                goto array_key_exists_array;
                        }
                }
-               result = zend_array_key_exists_slow(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
+               result = 0;
        }
 
 
-       ZEND_VM_SMART_BRANCH(result == IS_TRUE, 1);
+       ZEND_VM_SMART_BRANCH(result, 1);
 }
 
 /* No specialization for op_types (CONST|TMPVAR|UNUSED|CV, ANY) */
index 06ed51b5792c05b161cf014d6d9b276aa8d8d107..4e9f9bde3ce0d2a0f560369c10b3b823a85df7b9 100644 (file)
@@ -804,7 +804,6 @@ static HashTable *spl_array_get_properties_for(zend_object *object, zend_prop_pu
                        break;
                case ZEND_PROP_PURPOSE_VAR_EXPORT:
                case ZEND_PROP_PURPOSE_JSON:
-               case _ZEND_PROP_PURPOSE_ARRAY_KEY_EXISTS:
                        dup = 0;
                        break;
                default:
index 410d65b7e9843bbede117dd06e47006371f97485..b83f48f7ff95e469093a567806198afa329c1793 100644 (file)
@@ -12,7 +12,6 @@ var_dump(isset($b['no_exists'])); //false
 var_dump(empty($b['b'])); //true
 var_dump(empty($b[37])); //true
 
-var_dump(array_key_exists('b', $b)); //true
 var_dump($b['b']);
 
 $a = array('b' => '', 37 => false);
@@ -29,9 +28,6 @@ bool(false)
 bool(false)
 bool(true)
 bool(true)
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(true)
 NULL
 bool(true)
 bool(true)
index 413ed319d79ea3174622112704f78745f0f811bf..ffa695f26dc15ff73da21c154c8736c19e5f3bea 100644 (file)
@@ -6332,23 +6332,13 @@ PHP_FUNCTION(array_map)
 PHP_FUNCTION(array_key_exists)
 {
        zval *key;
-       zval *array;
        HashTable *ht;
 
        ZEND_PARSE_PARAMETERS_START(2, 2)
                Z_PARAM_ZVAL(key)
-               Z_PARAM_ARRAY_OR_OBJECT(array)
+               Z_PARAM_ARRAY_HT(ht)
        ZEND_PARSE_PARAMETERS_END();
 
-       if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
-               ht = Z_ARRVAL_P(array);
-       } else {
-               ht = zend_get_properties_for(array, ZEND_PROP_PURPOSE_ARRAY_CAST);
-               php_error_docref(NULL, E_DEPRECATED,
-                       "Using array_key_exists() on objects is deprecated. "
-                       "Use isset() or property_exists() instead");
-       }
-
        switch (Z_TYPE_P(key)) {
                case IS_STRING:
                        RETVAL_BOOL(zend_symtable_exists_ind(ht, Z_STR_P(key)));
@@ -6363,10 +6353,6 @@ PHP_FUNCTION(array_key_exists)
                        php_error_docref(NULL, E_WARNING, "The first argument should be either a string or an integer");
                        RETVAL_FALSE;
        }
-
-       if (Z_TYPE_P(array) != IS_ARRAY) {
-               zend_release_properties(ht);
-       }
 }
 /* }}} */
 
index f66648f17d40ca25d7d5c73aac3ad5df84b355c9..551ef85a6704c142c540029688b8edee42ab0e77 100644 (file)
@@ -77,29 +77,16 @@ var_dump( array_key_exists(17.5, array(1,23) ) ) ;
 echo "\n*** Testing operation on objects ***\n";
 class key_check
 {
-  private   $private_var = "Priviate var";
-  protected $protected_var = "Protected var";
-  public    $public_var = "Public var";
-  public    $arr = array("var" => "value", "1" => "one", ""=>"value");
-  public function print_member()
-  {
-    echo $this->$private_var."\n";
-    echo $this->$protected_var."\n";
-    echo $this->$public_var."\n";
-  }
+  public $public_var = "Public var";
 }
 
 $key_check_obj = new key_check; //new object
-/* array_key_exists() on an object, it should work on only public member variables */
-var_dump(array_key_exists("private_var", $key_check_obj)); // not found, private member
-var_dump(array_key_exists("protected_var", $key_check_obj)); // not found, private member
-var_dump(array_key_exists("public_var", $key_check_obj)); // found, public member
-var_dump(array_key_exists("print_member", $key_check_obj)); // not found, its a function
-var_dump(array_key_exists("arr", $key_check_obj)); //found, public member
-var_dump(array_key_exists("var", $key_check_obj->arr)); //found,  key is in member array
+try {
+    var_dump(array_key_exists("public_var", $key_check_obj));
+} catch (TypeError $e) {
+    echo $e->getMessage(), "\n";
+}
 
-/* error condition, first argument as object */
-var_dump( array_key_exists($key_check_obj, $key_check_obj) );
 echo "Done\n";
 ?>
 --EXPECTF--
@@ -240,25 +227,5 @@ Warning: array_key_exists(): The first argument should be either a string or an
 bool(false)
 
 *** Testing operation on objects ***
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(false)
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(false)
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(true)
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(false)
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(true)
-bool(true)
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-
-Warning: array_key_exists(): The first argument should be either a string or an integer in %s on line %d
-bool(false)
+array_key_exists() expects parameter 2 to be array, object given
 Done
diff --git a/ext/standard/tests/array/array_key_exists_object1.phpt b/ext/standard/tests/array/array_key_exists_object1.phpt
deleted file mode 100644 (file)
index 5386bd6..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
---TEST--
-Test array_key_exists() function : object functionality
---FILE--
-<?php
-/* Prototype  : bool array_key_exists(mixed $key, array $search)
- * Description: Checks if the given key or index exists in the array
- * Source code: ext/standard/array.c
- * Alias to functions: key_exists
- */
-
-/*
- * Test basic functionality of array_key_exists() with objects
- */
-
-echo "*** Testing array_key_exists() : object functionality ***\n";
-
-class myClass {
-       var $var1;
-       var $var2;
-       var $var3;
-
-       function __construct($a, $b, $c = null) {
-               $this->var1 = $a;
-               $this->var2 = $b;
-               if (!is_null($c)) {
-                       $this->var3 = $c;
-               }
-       }
-}
-
-echo "\n-- Do not assign a value to \$class1->var3 --\n";
-$class1 = new myClass ('a', 'b');
-echo "\$key = var1:\n";
-var_dump(array_key_exists('var1', $class1));
-echo "\$key = var3:\n";
-var_dump(array_key_exists('var3', $class1));
-echo "\$class1:\n";
-var_dump($class1);
-
-echo "\n-- Assign a value to \$class2->var3 --\n";
-$class2 = new myClass('x', 'y', 'z');
-echo "\$key = var3:\n";
-var_dump(array_key_exists('var3', $class2));
-echo "\$class2:\n";
-var_dump($class2);
-
-echo "Done";
-?>
---EXPECTF--
-*** Testing array_key_exists() : object functionality ***
-
--- Do not assign a value to $class1->var3 --
-$key = var1:
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(true)
-$key = var3:
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(true)
-$class1:
-object(myClass)#1 (3) {
-  ["var1"]=>
-  string(1) "a"
-  ["var2"]=>
-  string(1) "b"
-  ["var3"]=>
-  NULL
-}
-
--- Assign a value to $class2->var3 --
-$key = var3:
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(true)
-$class2:
-object(myClass)#2 (3) {
-  ["var1"]=>
-  string(1) "x"
-  ["var2"]=>
-  string(1) "y"
-  ["var3"]=>
-  string(1) "z"
-}
-Done
diff --git a/ext/standard/tests/array/array_key_exists_object2.phpt b/ext/standard/tests/array/array_key_exists_object2.phpt
deleted file mode 100644 (file)
index b550f71..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
---TEST--
-Test array_key_exists() function : object functionality - different visibilities
---FILE--
-<?php
-/* Prototype  : bool array_key_exists(mixed $key, array $search)
- * Description: Checks if the given key or index exists in the array
- * Source code: ext/standard/array.c
- * Alias to functions: key_exists
- */
-
-/*
- * Pass array_key_exists() an object with private and protected properties
- */
-
-echo "*** Testing array_key_exists() : object functionality ***\n";
-
-class myClass {
-       public $var1;
-       protected $var2;
-       private $var3;
-
-       function __construct($a, $b, $c = null) {
-               $this->var1 = $a;
-               $this->var2 = $b;
-               if (!is_null($c)) {
-                       $this->var3 = $c;
-               }
-       }
-}
-
-echo "\n-- Do not assign a value to \$class1->var3 --\n";
-$class1 = new myClass ('a', 'b');
-echo "\$key = var1:\n";
-var_dump(array_key_exists('var1', $class1));
-echo "\$key = var2:\n";
-var_dump(array_key_exists('var2', $class1));
-echo "\$key = var3:\n";
-var_dump(array_key_exists('var3', $class1));
-echo "\$class1:\n";
-var_dump($class1);
-
-echo "\n-- Assign a value to \$class2->var3 --\n";
-$class2 = new myClass('x', 'y', 'z');
-echo "\$key = var3:\n";
-var_dump(array_key_exists('var3', $class2));
-echo "\$class2:\n";
-var_dump($class2);
-
-echo "Done";
-?>
---EXPECTF--
-*** Testing array_key_exists() : object functionality ***
-
--- Do not assign a value to $class1->var3 --
-$key = var1:
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(true)
-$key = var2:
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(false)
-$key = var3:
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(false)
-$class1:
-object(myClass)#1 (3) {
-  ["var1"]=>
-  string(1) "a"
-  ["var2":protected]=>
-  string(1) "b"
-  ["var3":"myClass":private]=>
-  NULL
-}
-
--- Assign a value to $class2->var3 --
-$key = var3:
-
-Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in %s on line %d
-bool(false)
-$class2:
-object(myClass)#2 (3) {
-  ["var1"]=>
-  string(1) "x"
-  ["var2":protected]=>
-  string(1) "y"
-  ["var3":"myClass":private]=>
-  string(1) "z"
-}
-Done