summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-11-04 13:02:28 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-11-04 13:10:03 +0100
commitc46b2ed677aecfc2f07993eefad0326f31c5cc44 (patch)
tree0f22bad82fd6d7c812e1e5f94059fb54485e05bf
parent31f12541827b88fce62c887ea9de3ae6665a421c (diff)
downloadphp-git-c46b2ed677aecfc2f07993eefad0326f31c5cc44.tar.gz
Remove support for array_key_exists() with objects
-rw-r--r--UPGRADING2
-rw-r--r--Zend/zend_execute.c38
-rw-r--r--Zend/zend_object_handlers.c1
-rw-r--r--Zend/zend_object_handlers.h2
-rw-r--r--Zend/zend_vm_def.h7
-rw-r--r--Zend/zend_vm_execute.h63
-rw-r--r--ext/spl/spl_array.c1
-rw-r--r--ext/spl/tests/bug61347.phpt4
-rw-r--r--ext/standard/array.c16
-rw-r--r--ext/standard/tests/array/array_key_exists.phpt47
-rw-r--r--ext/standard/tests/array/array_key_exists_object1.phpt85
-rw-r--r--ext/standard/tests/array/array_key_exists_object2.phpt91
12 files changed, 65 insertions, 292 deletions
diff --git a/UPGRADING b/UPGRADING
index 0bf9bccf43..1412162b6f 100644
--- 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
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 673840ace5..345335b708 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -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)));
}
}
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index 492a2d3e1f..c73f6019f6 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -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);
diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h
index 713669f297..19b7ff993f 100644
--- a/Zend/zend_object_handlers.h
+++ b/Zend/zend_object_handlers.h
@@ -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;
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index cd43820463..3ba0c41d63 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -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) */
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 75cce58ffa..f754348bac 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -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) */
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c
index 06ed51b579..4e9f9bde3c 100644
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -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:
diff --git a/ext/spl/tests/bug61347.phpt b/ext/spl/tests/bug61347.phpt
index 410d65b7e9..b83f48f7ff 100644
--- a/ext/spl/tests/bug61347.phpt
+++ b/ext/spl/tests/bug61347.phpt
@@ -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)
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 413ed319d7..ffa695f26d 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -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);
- }
}
/* }}} */
diff --git a/ext/standard/tests/array/array_key_exists.phpt b/ext/standard/tests/array/array_key_exists.phpt
index f66648f17d..551ef85a67 100644
--- a/ext/standard/tests/array/array_key_exists.phpt
+++ b/ext/standard/tests/array/array_key_exists.phpt
@@ -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
index 5386bd624c..0000000000
--- a/ext/standard/tests/array/array_key_exists_object1.phpt
+++ /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
index b550f71a79..0000000000
--- a/ext/standard/tests/array/array_key_exists_object2.phpt
+++ /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