From 2eb5c6307ead17c89abe3d1f4cce8f778e291e53 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 24 Aug 2026 15:56:42 +0100 Subject: [PATCH 1/3] spl: deprecate SplFileObject CSV methods RFC: https://wiki.php.net/rfc/deprecations_php_8_6#deprecate_splfileobject_csv_methods --- ext/spl/spl_directory.stub.php | 4 ++ ext/spl/spl_directory_arginfo.h | 27 +++++++++++--- .../SplFileObject_fflush_basic_001.phpt | 2 +- .../SplFileObject_fgetcsv_escape_empty.phpt | 29 --------------- .../SplFileObject_fpassthru_basic.phpt | 2 +- .../SplFileObject_fscanf_basic.phpt | 2 +- ...bject_fstat_with_basic_fstat_disabled.phpt | 2 +- ...tinput.csv => SplFileObject_testinput.txt} | 0 ext/spl/tests/SplFileObject/bug46569.phpt | 15 -------- .../SplFileObject_fgetcsv_basic.phpt | 5 ++- ...SplFileObject_fgetcsv_delimiter_basic.phpt | 5 ++- ...SplFileObject_fgetcsv_delimiter_error.phpt | 5 ++- ...SplFileObject_fgetcsv_enclosure_basic.phpt | 5 ++- ...SplFileObject_fgetcsv_enclosure_error.phpt | 5 ++- .../SplFileObject_fgetcsv_escape_basic.phpt | 1 + .../SplFileObject_fgetcsv_escape_default.phpt | 2 + .../SplFileObject_fgetcsv_escape_empty.phpt | 37 +++++++++++++++++++ .../SplFileObject_fgetcsv_escape_error.phpt | 3 +- .../{ => csv}/SplFileObject_fputcsv.phpt | 4 +- .../{ => csv}/SplFileObject_fputcsv_002.phpt | 4 ++ .../SplFileObject_fputcsv_variation1.phpt | 4 +- .../SplFileObject_fputcsv_variation10.phpt | 4 +- .../SplFileObject_fputcsv_variation11.phpt | 4 +- .../SplFileObject_fputcsv_variation12.phpt | 4 +- .../SplFileObject_fputcsv_variation13.phpt | 4 +- .../SplFileObject_fputcsv_variation14.phpt | 6 ++- .../SplFileObject_fputcsv_variation15.phpt | 5 ++- .../SplFileObject_fputcsv_variation16.phpt | 2 +- .../SplFileObject_fputcsv_variation5.phpt | 4 +- .../SplFileObject_fputcsv_variation6.phpt | 4 +- .../SplFileObject_fputcsv_variation7.phpt | 4 +- .../SplFileObject_fputcsv_variation8.phpt | 4 +- ...SplFileObject_getCsvControl_basic_001.phpt | 3 +- .../SplFileObject_setCsvControl_basic.phpt | 3 +- .../SplFileObject_setCsvControl_error001.phpt | 3 +- .../SplFileObject_setCsvControl_error002.phpt | 3 +- .../SplFileObject_setCsvControl_error003.phpt | 3 +- ...FileObject_setCsvControl_variation001.phpt | 2 + ...FileObject_setCsvControl_variation002.phpt | 5 ++- .../csv/SplFileObject_testinput.csv | 5 +++ .../SplFileObject/{ => csv}/bug46569.csv | 0 ext/spl/tests/SplFileObject/csv/bug46569.phpt | 19 ++++++++++ .../{ => SplFileObject/csv}/bug69181.phpt | 4 +- .../SplFileObject/{ => csv}/bug75917.phpt | 7 +++- .../SplFileObject/{ => csv}/bug77024.phpt | 5 ++- .../SplFileObject/{ => csv}/bug78976.phpt | 5 ++- .../{ => csv}/fgetcsv_blank_file.phpt | 7 +++- .../{ => SplFileObject/csv}/gh13685.phpt | 10 ++++- .../{ => SplFileObject/csv}/gh16217.phpt | 3 +- 49 files changed, 200 insertions(+), 95 deletions(-) delete mode 100644 ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_empty.phpt rename ext/spl/tests/SplFileObject/{SplFileObject_testinput.csv => SplFileObject_testinput.txt} (100%) delete mode 100644 ext/spl/tests/SplFileObject/bug46569.phpt rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_basic.phpt (74%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_delimiter_basic.phpt (75%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_delimiter_error.phpt (76%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_enclosure_basic.phpt (75%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_enclosure_error.phpt (76%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_escape_basic.phpt (83%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_escape_default.phpt (87%) create mode 100644 ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_empty.phpt rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fgetcsv_escape_error.phpt (83%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv.phpt (96%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_002.phpt (79%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation1.phpt (99%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation10.phpt (98%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation11.phpt (99%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation12.phpt (99%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation13.phpt (89%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation14.phpt (86%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation15.phpt (61%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation16.phpt (91%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation5.phpt (99%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation6.phpt (99%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation7.phpt (99%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_fputcsv_variation8.phpt (99%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_getCsvControl_basic_001.phpt (71%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_setCsvControl_basic.phpt (85%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_setCsvControl_error001.phpt (85%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_setCsvControl_error002.phpt (85%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_setCsvControl_error003.phpt (86%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_setCsvControl_variation001.phpt (88%) rename ext/spl/tests/SplFileObject/{ => csv}/SplFileObject_setCsvControl_variation002.phpt (59%) create mode 100644 ext/spl/tests/SplFileObject/csv/SplFileObject_testinput.csv rename ext/spl/tests/SplFileObject/{ => csv}/bug46569.csv (100%) create mode 100644 ext/spl/tests/SplFileObject/csv/bug46569.phpt rename ext/spl/tests/{ => SplFileObject/csv}/bug69181.phpt (92%) rename ext/spl/tests/SplFileObject/{ => csv}/bug75917.phpt (65%) rename ext/spl/tests/SplFileObject/{ => csv}/bug77024.phpt (71%) rename ext/spl/tests/SplFileObject/{ => csv}/bug78976.phpt (53%) rename ext/spl/tests/SplFileObject/{ => csv}/fgetcsv_blank_file.phpt (56%) rename ext/spl/tests/{ => SplFileObject/csv}/gh13685.phpt (73%) rename ext/spl/tests/{ => SplFileObject/csv}/gh16217.phpt (91%) diff --git a/ext/spl/spl_directory.stub.php b/ext/spl/spl_directory.stub.php index 57407007c0a5..9e2ebd9ccc4a 100644 --- a/ext/spl/spl_directory.stub.php +++ b/ext/spl/spl_directory.stub.php @@ -239,15 +239,19 @@ public function fgets(): string {} public function fread(int $length): string|false {} /** @tentative-return-type */ + #[\Deprecated(since: '8.6')] public function fgetcsv(string $separator = ",", string $enclosure = "\"", string $escape = "\\"): array|false {} /** @tentative-return-type */ + #[\Deprecated(since: '8.6')] public function fputcsv(array $fields, string $separator = ",", string $enclosure = "\"", string $escape = "\\", string $eol = "\n"): int|false {} /** @tentative-return-type */ + #[\Deprecated(since: '8.6')] public function setCsvControl(string $separator = ",", string $enclosure = "\"", string $escape = "\\"): void {} /** @tentative-return-type */ + #[\Deprecated(since: '8.6')] public function getCsvControl(): array {} /** diff --git a/ext/spl/spl_directory_arginfo.h b/ext/spl/spl_directory_arginfo.h index 3a5bd37d49d5..0eb6969cb517 100644 --- a/ext/spl/spl_directory_arginfo.h +++ b/ext/spl/spl_directory_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit spl_directory.stub.php instead. - * Stub hash: de8ef9b284ceb46a1d55b22d4a5a3009d04bc2af */ + * Stub hash: 3313c7bc6d9691a01903e6625630863e2b1e1bf7 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) @@ -438,10 +438,10 @@ static const zend_function_entry class_SplFileObject_methods[] = { ZEND_ME(SplFileObject, valid, arginfo_class_SplFileObject_valid, ZEND_ACC_PUBLIC) ZEND_ME(SplFileObject, fgets, arginfo_class_SplFileObject_fgets, ZEND_ACC_PUBLIC) ZEND_ME(SplFileObject, fread, arginfo_class_SplFileObject_fread, ZEND_ACC_PUBLIC) - ZEND_ME(SplFileObject, fgetcsv, arginfo_class_SplFileObject_fgetcsv, ZEND_ACC_PUBLIC) - ZEND_ME(SplFileObject, fputcsv, arginfo_class_SplFileObject_fputcsv, ZEND_ACC_PUBLIC) - ZEND_ME(SplFileObject, setCsvControl, arginfo_class_SplFileObject_setCsvControl, ZEND_ACC_PUBLIC) - ZEND_ME(SplFileObject, getCsvControl, arginfo_class_SplFileObject_getCsvControl, ZEND_ACC_PUBLIC) + ZEND_ME(SplFileObject, fgetcsv, arginfo_class_SplFileObject_fgetcsv, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED) + ZEND_ME(SplFileObject, fputcsv, arginfo_class_SplFileObject_fputcsv, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED) + ZEND_ME(SplFileObject, setCsvControl, arginfo_class_SplFileObject_setCsvControl, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED) + ZEND_ME(SplFileObject, getCsvControl, arginfo_class_SplFileObject_getCsvControl, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED) ZEND_ME(SplFileObject, flock, arginfo_class_SplFileObject_flock, ZEND_ACC_PUBLIC) ZEND_ME(SplFileObject, fflush, arginfo_class_SplFileObject_fflush, ZEND_ACC_PUBLIC) ZEND_ME(SplFileObject, ftell, arginfo_class_SplFileObject_ftell, ZEND_ACC_PUBLIC) @@ -635,6 +635,23 @@ static zend_class_entry *register_class_SplFileObject(zend_class_entry *class_en zend_declare_typed_class_constant(class_entry, const_READ_CSV_name, &const_READ_CSV_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(const_READ_CSV_name, true); + + zend_attribute *attribute_Deprecated_func_fgetcsv_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "fgetcsv", sizeof("fgetcsv") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); + ZVAL_STR(&attribute_Deprecated_func_fgetcsv_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); + attribute_Deprecated_func_fgetcsv_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); + + zend_attribute *attribute_Deprecated_func_fputcsv_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "fputcsv", sizeof("fputcsv") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); + ZVAL_STR(&attribute_Deprecated_func_fputcsv_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); + attribute_Deprecated_func_fputcsv_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); + + zend_attribute *attribute_Deprecated_func_setcsvcontrol_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setcsvcontrol", sizeof("setcsvcontrol") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); + ZVAL_STR(&attribute_Deprecated_func_setcsvcontrol_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); + attribute_Deprecated_func_setcsvcontrol_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); + + zend_attribute *attribute_Deprecated_func_getcsvcontrol_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "getcsvcontrol", sizeof("getcsvcontrol") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); + ZVAL_STR(&attribute_Deprecated_func_getcsvcontrol_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); + attribute_Deprecated_func_getcsvcontrol_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); + return class_entry; } diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fflush_basic_001.phpt b/ext/spl/tests/SplFileObject/SplFileObject_fflush_basic_001.phpt index b399a852008e..7d5d90f43d6d 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fflush_basic_001.phpt +++ b/ext/spl/tests/SplFileObject/SplFileObject_fflush_basic_001.phpt @@ -5,7 +5,7 @@ SplFileObject::fflush function - basic test /* * test a successful flush */ -$obj = New SplFileObject(__DIR__.'/SplFileObject_testinput.csv'); +$obj = New SplFileObject(__DIR__.'/SplFileObject_testinput.txt'); var_dump($obj->fflush()); /* diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_empty.phpt b/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_empty.phpt deleted file mode 100644 index 0498b6c91297..000000000000 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_empty.phpt +++ /dev/null @@ -1,29 +0,0 @@ ---TEST-- -SplFileObject::fgetcsv() with empty $escape ---FILE-- -fwrite($contents); -$file->rewind(); -while (($data = $file->fgetcsv(',', '"', ''))) { - print_r($data); -} -?> ---EXPECT-- -Array -( - [0] => cell1 - [1] => cell2\ - [2] => cell3 - [3] => cell4 -) -Array -( - [0] => \\\line1 -line2\\\ -) diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fpassthru_basic.phpt b/ext/spl/tests/SplFileObject/SplFileObject_fpassthru_basic.phpt index a79047830b69..f32ecc9fbadb 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fpassthru_basic.phpt +++ b/ext/spl/tests/SplFileObject/SplFileObject_fpassthru_basic.phpt @@ -2,7 +2,7 @@ SplFileObject::fpassthru function - basic functionality test --FILE-- fpassthru(); ?> --EXPECT-- diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fscanf_basic.phpt b/ext/spl/tests/SplFileObject/SplFileObject_fscanf_basic.phpt index 02de3f8d1276..c7f3fee0c629 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fscanf_basic.phpt +++ b/ext/spl/tests/SplFileObject/SplFileObject_fscanf_basic.phpt @@ -2,7 +2,7 @@ SplFileObject::fscanf function - basic functionality test --FILE-- fscanf('%s')); ?> --EXPECT-- diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fstat_with_basic_fstat_disabled.phpt b/ext/spl/tests/SplFileObject/SplFileObject_fstat_with_basic_fstat_disabled.phpt index dda7f1e4283f..26573b6af170 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fstat_with_basic_fstat_disabled.phpt +++ b/ext/spl/tests/SplFileObject/SplFileObject_fstat_with_basic_fstat_disabled.phpt @@ -4,7 +4,7 @@ SplFileObject::fstat when fstat() has been disabled. disable_functions="fstat" --FILE-- fstat()); ?> --EXPECTF-- diff --git a/ext/spl/tests/SplFileObject/SplFileObject_testinput.csv b/ext/spl/tests/SplFileObject/SplFileObject_testinput.txt similarity index 100% rename from ext/spl/tests/SplFileObject/SplFileObject_testinput.csv rename to ext/spl/tests/SplFileObject/SplFileObject_testinput.txt diff --git a/ext/spl/tests/SplFileObject/bug46569.phpt b/ext/spl/tests/SplFileObject/bug46569.phpt deleted file mode 100644 index be5d20ce99e3..000000000000 --- a/ext/spl/tests/SplFileObject/bug46569.phpt +++ /dev/null @@ -1,15 +0,0 @@ ---TEST-- -Bug #46569 (SplFileObject: fgetcsv after seek returns wrong line) ---FILE-- -setCsvControl(escape: ""); -$file->seek(1); -print_r($file->fgetcsv()); -?> ---EXPECT-- -Array -( - [0] => second - [1] => line -) diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_basic.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_basic.phpt similarity index 74% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_basic.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_basic.phpt index dd42be924cdd..1c59408a058e 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_basic.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_basic.phpt @@ -23,7 +23,10 @@ var_dump($fo->fgetcsv()); ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d array(4) { [0]=> string(6) "field1" diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_delimiter_basic.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_delimiter_basic.phpt similarity index 75% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_delimiter_basic.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_delimiter_basic.phpt index 13bbfd9064ab..8eafc3780b64 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_delimiter_basic.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_delimiter_basic.phpt @@ -24,7 +24,10 @@ var_dump($fo->fgetcsv('|')); ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d array(4) { [0]=> string(6) "field1" diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_delimiter_error.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_delimiter_error.phpt similarity index 76% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_delimiter_error.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_delimiter_error.phpt index 99ce5203edf0..1551d4034dc2 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_delimiter_error.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_delimiter_error.phpt @@ -27,5 +27,8 @@ try { ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::fgetcsv(): Argument #1 ($separator) must be a single character diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_enclosure_basic.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_enclosure_basic.phpt similarity index 75% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_enclosure_basic.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_enclosure_basic.phpt index d200d440f776..fc83c3f8757f 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_enclosure_basic.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_enclosure_basic.phpt @@ -24,7 +24,10 @@ var_dump($fo->fgetcsv(enclosure: '"')); ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d array(4) { [0]=> string(6) "field1" diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_enclosure_error.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_enclosure_error.phpt similarity index 76% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_enclosure_error.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_enclosure_error.phpt index a13ac8d62a53..71b973ab7a16 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_enclosure_error.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_enclosure_error.phpt @@ -27,5 +27,8 @@ try { ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::fgetcsv(): Argument #2 ($enclosure) must be a single character diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_basic.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_basic.phpt similarity index 83% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_basic.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_basic.phpt index 4a8bccaf671a..eedc801ba08c 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_basic.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_basic.phpt @@ -14,6 +14,7 @@ var_dump($fo->fgetcsv(',', '"', '"')); unlink('SplFileObject__fgetcsv6.csv'); ?> --EXPECTF-- +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d array(3) { [0]=> string(3) "aaa" diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_default.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_default.phpt similarity index 87% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_default.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_default.phpt index b6a878f3cf35..d923d5997918 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_default.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_default.phpt @@ -14,6 +14,8 @@ var_dump($fo->fgetcsv()); unlink('SplFileObject__fgetcsv7.csv'); ?> --EXPECTF-- +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d + Deprecated: SplFileObject::fgetcsv(): the $escape parameter must be provided, as its default value will change, either explicitly or via SplFileObject::setCsvControl() in %s on line %d array(3) { [0]=> diff --git a/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_empty.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_empty.phpt new file mode 100644 index 000000000000..b14f4177c50c --- /dev/null +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_empty.phpt @@ -0,0 +1,37 @@ +--TEST-- +SplFileObject::fgetcsv() with empty $escape +--FILE-- +fwrite($contents); +$file->rewind(); +while (($data = $file->fgetcsv(',', '"', ''))) { + var_dump($data); +} +?> +--EXPECTF-- +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +array(4) { + [0]=> + string(5) "cell1" + [1]=> + string(6) "cell2\" + [2]=> + string(5) "cell3" + [3]=> + string(5) "cell4" +} + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +array(1) { + [0]=> + string(17) "\\\line1 +line2\\\" +} + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_error.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_error.phpt similarity index 83% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_error.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_error.phpt index d2421e23271f..324017a44672 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_escape_error.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fgetcsv_escape_error.phpt @@ -17,5 +17,6 @@ try { ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::fgetcsv(): Argument #3 ($escape) must be empty or a single character diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv.phpt similarity index 96% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv.phpt index a9bba9a6c4e8..0ab1bcb2d563 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv.phpt @@ -5,7 +5,7 @@ SplFileObject::fputcsv(): functionality tests $file = __DIR__ . '/SplFileObject_fputcsv.csv'; $fo = new SplFileObject($file, 'w'); // Suppress deprecation notice -$fo->setCsvControl(escape: '\\'); +@$fo->setCsvControl(escape: '\\'); $list = array ( 0 => 'aaa,bbb', @@ -31,7 +31,7 @@ $list = array ( ); foreach ($list as $v) { - $fo->fputcsv(explode(',', $v)); + @$fo->fputcsv(explode(',', $v)); } unset($fo); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_002.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_002.phpt similarity index 79% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_002.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_002.phpt index 41b1db637f24..1806e7e872d3 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_002.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_002.phpt @@ -17,6 +17,10 @@ $file = __DIR__ . '/SplFileObject_fputcsv1.csv'; unlink($file); ?> --EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d + Warning: Array to string conversion in %s on line %d array(7) { [0]=> diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation1.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation1.phpt similarity index 99% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation1.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation1.phpt index 2b9e649678bd..814e3ccea1be 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation1.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation1.phpt @@ -42,13 +42,13 @@ foreach ($csv_lists as $csv_list) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: ''); + @$fo->setCsvControl(escape: ''); $delimiter = $csv_list[0]; $enclosure = $csv_list[1]; $csv_field = $csv_list[2]; - var_dump( $fo->fputcsv($csv_field, $delimiter, $enclosure) ); + var_dump( @$fo->fputcsv($csv_field, $delimiter, $enclosure) ); // check the file pointer position and eof var_dump( $fo->ftell() ); var_dump( $fo->eof() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation10.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation10.phpt similarity index 98% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation10.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation10.phpt index 6c6f5109df04..7409045c2915 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation10.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation10.phpt @@ -36,12 +36,12 @@ foreach ($fields as $field) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: '\\'); + @$fo->setCsvControl(escape: '\\'); $csv_field = $field; // write to a file in csv format - var_dump( $fo->fputcsv($csv_field) ); + var_dump( @$fo->fputcsv($csv_field) ); // check the file pointer position and eof var_dump( $fo->ftell() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation11.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation11.phpt similarity index 99% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation11.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation11.phpt index b59dfafcfcb7..dd435e2c55ec 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation11.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation11.phpt @@ -42,14 +42,14 @@ foreach ($csv_lists as $csv_list) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: '\\'); + @$fo->setCsvControl(escape: '\\'); $delimiter = $csv_list[0]; $enclosure = $csv_list[1]; $csv_field = $csv_list[2]; // write to a file in csv format - var_dump( $fo->fputcsv($csv_field, $delimiter) ); + var_dump( @$fo->fputcsv($csv_field, $delimiter) ); // check the file pointer position and eof var_dump( $fo->ftell() ); var_dump( $fo->eof() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation12.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation12.phpt similarity index 99% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation12.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation12.phpt index 04fd4c30b276..0fda717e16b8 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation12.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation12.phpt @@ -43,14 +43,14 @@ foreach ($csv_lists as $csv_list) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: '\\'); + @$fo->setCsvControl(escape: '\\'); $delimiter = $csv_list[0]; $enclosure = $csv_list[1]; $csv_field = $csv_list[2]; // write to a file in csv format - var_dump( $fo->fputcsv($csv_field, '+') ); + var_dump( @$fo->fputcsv($csv_field, '+') ); // check the file pointer position and eof var_dump( $fo->ftell() ); var_dump( $fo->eof() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation13.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation13.phpt similarity index 89% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation13.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation13.phpt index 136491f915eb..e0e6d7962301 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation13.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation13.phpt @@ -25,7 +25,9 @@ echo "Done\n"; $file = __DIR__ . '/SplFileObject_fputcsv_variation13.csv'; unlink($file); ?> ---EXPECT-- +--EXPECTF-- *** Testing fputcsv() : with default enclosure & delimiter of two chars *** + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::fputcsv(): Argument #2 ($separator) must be a single character Done diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation14.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation14.phpt similarity index 86% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation14.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation14.phpt index 8a8cb968b0af..a1a32130790c 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation14.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation14.phpt @@ -30,8 +30,12 @@ echo "Done\n"; $file = __DIR__ . '/SplFileObject_fputcsv_variation14.csv'; unlink($file); ?> ---EXPECT-- +--EXPECTF-- *** Testing fputcsv() : with enclosure & delimiter of two chars and file opened in read mode *** + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::fputcsv(): Argument #2 ($separator) must be a single character + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::fputcsv(): Argument #3 ($enclosure) must be a single character Done diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation15.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation15.phpt similarity index 61% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation15.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation15.phpt index 0762af9f214b..9911518830ee 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation15.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation15.phpt @@ -15,6 +15,9 @@ foreach ($file as $line) { echo $line; } ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d \ "\""" diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation16.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation16.phpt similarity index 91% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation16.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation16.phpt index d2bca8572f5b..796b9ac6ee79 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation16.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation16.phpt @@ -12,7 +12,7 @@ $eol_chars = ['||', '|', '\n', "\n"]; foreach ($eol_chars as $eol_char) { $file = new SplTempFileObject; foreach ($data as $record) { - $file->fputcsv($record, ',', '"', '', $eol_char); + @$file->fputcsv($record, ',', '"', '', $eol_char); } $file->rewind(); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation5.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation5.phpt similarity index 99% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation5.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation5.phpt index 468b66b44c23..b42cbb7aa15c 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation5.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation5.phpt @@ -42,14 +42,14 @@ foreach ($csv_lists as $csv_list) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: '\\'); + @$fo->setCsvControl(escape: '\\'); $delimiter = $csv_list[0]; $enclosure = $csv_list[1]; $csv_field = $csv_list[2]; // write to a file in csv format - var_dump( $fo->fputcsv($csv_field) ); + var_dump( @$fo->fputcsv($csv_field) ); // check the file pointer position and eof var_dump( $fo->ftell() ); var_dump( $fo->eof() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation6.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation6.phpt similarity index 99% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation6.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation6.phpt index 8a4fb8ed9c5d..49c745da1781 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation6.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation6.phpt @@ -45,14 +45,14 @@ foreach ($csv_lists as $csv_list) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: '\\'); + @$fo->setCsvControl(escape: '\\'); $delimiter = $csv_list[0]; $enclosure = $csv_list[1]; $csv_field = $csv_list[2]; // write to a file in csv format - var_dump( $fo->fputcsv($csv_field, '+', '%') ); + var_dump( @$fo->fputcsv($csv_field, '+', '%') ); // check the file pointer position and eof var_dump( $fo->ftell() ); var_dump( $fo->eof() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation7.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation7.phpt similarity index 99% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation7.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation7.phpt index 46642a4f52d7..058abb6faab7 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation7.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation7.phpt @@ -45,14 +45,14 @@ foreach ($csv_lists as $csv_list) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: '\\'); + @$fo->setCsvControl(escape: '\\'); $delimiter = $csv_list[0]; $enclosure = $csv_list[1]; $csv_field = $csv_list[2]; // write to a file in csv format - var_dump( $fo->fputcsv($csv_field, '+', $enclosure) ); + var_dump( @$fo->fputcsv($csv_field, '+', $enclosure) ); // check the file pointer position and eof var_dump( $fo->ftell() ); var_dump( $fo->eof() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation8.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation8.phpt similarity index 99% rename from ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation8.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation8.phpt index 608a61bf3d57..f78965120e41 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fputcsv_variation8.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_fputcsv_variation8.phpt @@ -45,14 +45,14 @@ foreach ($csv_lists as $csv_list) { } else { $fo = new SplFileObject($file, $file_modes[$mode_counter]); } - $fo->setCsvControl(escape: '\\'); + @$fo->setCsvControl(escape: '\\'); $delimiter = $csv_list[0]; $enclosure = $csv_list[1]; $csv_field = $csv_list[2]; // write to a file in csv format - var_dump( $fo->fputcsv($csv_field, $delimiter, '+') ); + var_dump( @$fo->fputcsv($csv_field, $delimiter, '+') ); // check the file pointer position and eof var_dump( $fo->ftell() ); var_dump( $fo->eof() ); diff --git a/ext/spl/tests/SplFileObject/SplFileObject_getCsvControl_basic_001.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_getCsvControl_basic_001.phpt similarity index 71% rename from ext/spl/tests/SplFileObject/SplFileObject_getCsvControl_basic_001.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_getCsvControl_basic_001.phpt index 97af917cb2ea..3224145f9e7a 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_getCsvControl_basic_001.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_getCsvControl_basic_001.phpt @@ -6,7 +6,8 @@ $obj = New SplFileObject(__DIR__.'/SplFileObject_testinput.csv'); var_dump($obj->getCsvControl()); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::getCsvControl() is deprecated since 8.6 in %s on line %d array(3) { [0]=> string(1) "," diff --git a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_basic.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_basic.phpt similarity index 85% rename from ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_basic.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_basic.phpt index a8b7cb730d0f..0c4d3e04903c 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_basic.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_basic.phpt @@ -24,7 +24,8 @@ foreach ($s as $row) { ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d groene appelen : 10 gele bananen : 20 rode kersen : 30 diff --git a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error001.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error001.phpt similarity index 85% rename from ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error001.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error001.phpt index 3ff6478ca1df..d5168af4ebda 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error001.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error001.phpt @@ -23,5 +23,6 @@ try { ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::setCsvControl(): Argument #1 ($separator) must be a single character diff --git a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error002.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error002.phpt similarity index 85% rename from ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error002.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error002.phpt index 3a33c479fa06..85ba6a34f6e6 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error002.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error002.phpt @@ -23,5 +23,6 @@ try { ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::setCsvControl(): Argument #2 ($enclosure) must be a single character diff --git a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error003.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error003.phpt similarity index 86% rename from ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error003.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error003.phpt index a68d0ad29780..8bf9de8f2700 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_error003.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_error003.phpt @@ -25,5 +25,6 @@ try { ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d ValueError: SplFileObject::setCsvControl(): Argument #3 ($escape) must be empty or a single character diff --git a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_variation001.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_variation001.phpt similarity index 88% rename from ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_variation001.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_variation001.phpt index 8c8e52e9743c..3fb97a6e6c00 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_variation001.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_variation001.phpt @@ -24,6 +24,8 @@ foreach ($s as $row) { unlink('csv_control_data_variation001.csv'); ?> --EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + Deprecated: SplFileObject::setCsvControl(): the $escape parameter must be provided as its default value will change in %s on line %d groene appelen : 10 gele bananen : 20 diff --git a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_variation002.phpt b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_variation002.phpt similarity index 59% rename from ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_variation002.phpt rename to ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_variation002.phpt index 39b526a86aba..815b06676e92 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_setCsvControl_variation002.phpt +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_setCsvControl_variation002.phpt @@ -6,7 +6,10 @@ $file = new SplTempFileObject; $file->setCsvControl(',', '"', ''); var_dump($file->getCsvControl()); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::getCsvControl() is deprecated since 8.6 in %s on line %d array(3) { [0]=> string(1) "," diff --git a/ext/spl/tests/SplFileObject/csv/SplFileObject_testinput.csv b/ext/spl/tests/SplFileObject/csv/SplFileObject_testinput.csv new file mode 100644 index 000000000000..41a9e31c8d7c --- /dev/null +++ b/ext/spl/tests/SplFileObject/csv/SplFileObject_testinput.csv @@ -0,0 +1,5 @@ +first,second,third +1,2,3 +4,5,6 +7,8,9 +0,0,0 diff --git a/ext/spl/tests/SplFileObject/bug46569.csv b/ext/spl/tests/SplFileObject/csv/bug46569.csv similarity index 100% rename from ext/spl/tests/SplFileObject/bug46569.csv rename to ext/spl/tests/SplFileObject/csv/bug46569.csv diff --git a/ext/spl/tests/SplFileObject/csv/bug46569.phpt b/ext/spl/tests/SplFileObject/csv/bug46569.phpt new file mode 100644 index 000000000000..175321c44772 --- /dev/null +++ b/ext/spl/tests/SplFileObject/csv/bug46569.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #46569 (SplFileObject: fgetcsv after seek returns wrong line) +--FILE-- +setCsvControl(escape: ""); +$file->seek(1); +var_dump($file->fgetcsv()); +?> +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +array(2) { + [0]=> + string(6) "second" + [1]=> + string(4) "line" +} diff --git a/ext/spl/tests/bug69181.phpt b/ext/spl/tests/SplFileObject/csv/bug69181.phpt similarity index 92% rename from ext/spl/tests/bug69181.phpt rename to ext/spl/tests/SplFileObject/csv/bug69181.phpt index 085fccd32652..4c866ea1f5f6 100644 --- a/ext/spl/tests/bug69181.phpt +++ b/ext/spl/tests/SplFileObject/csv/bug69181.phpt @@ -12,14 +12,14 @@ CSV; file_put_contents($filename, $csv); $file = new SplFileObject($filename); -$file->setCsvControl(escape: ""); +@$file->setCsvControl(escape: ""); $file->setFlags(SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE | SplFileObject::READ_CSV); var_dump(iterator_to_array($file)); echo "\n====\n\n"; $file->rewind(); -while (($record = $file->fgetcsv())) { +while (($record = @$file->fgetcsv())) { var_dump($record); } ?> diff --git a/ext/spl/tests/SplFileObject/bug75917.phpt b/ext/spl/tests/SplFileObject/csv/bug75917.phpt similarity index 65% rename from ext/spl/tests/SplFileObject/bug75917.phpt rename to ext/spl/tests/SplFileObject/csv/bug75917.phpt index 27ce3f792c59..f85792451e9a 100644 --- a/ext/spl/tests/SplFileObject/bug75917.phpt +++ b/ext/spl/tests/SplFileObject/csv/bug75917.phpt @@ -20,6 +20,11 @@ $tmp->setFlags(SplFileObject::READ_CSV | SplFileObject::SKIP_EMPTY); $tmp->seek(23); var_dump($tmp->current()); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d bool(false) bool(false) diff --git a/ext/spl/tests/SplFileObject/bug77024.phpt b/ext/spl/tests/SplFileObject/csv/bug77024.phpt similarity index 71% rename from ext/spl/tests/SplFileObject/bug77024.phpt rename to ext/spl/tests/SplFileObject/csv/bug77024.phpt index a82713fb3a83..ac0d83ce152f 100644 --- a/ext/spl/tests/SplFileObject/bug77024.phpt +++ b/ext/spl/tests/SplFileObject/csv/bug77024.phpt @@ -19,7 +19,10 @@ unset($file); unlink($tmp); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d foo,bar,baz line1 diff --git a/ext/spl/tests/SplFileObject/bug78976.phpt b/ext/spl/tests/SplFileObject/csv/bug78976.phpt similarity index 53% rename from ext/spl/tests/SplFileObject/bug78976.phpt rename to ext/spl/tests/SplFileObject/csv/bug78976.phpt index 23123a34eb3b..41783bcfa6ee 100644 --- a/ext/spl/tests/SplFileObject/bug78976.phpt +++ b/ext/spl/tests/SplFileObject/csv/bug78976.phpt @@ -6,5 +6,8 @@ $file = new SplFileObject('php://memory', 'r'); $file->setCsvControl(escape: ""); var_dump($file->fputcsv(['foo', 'bar'])); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d bool(false) diff --git a/ext/spl/tests/SplFileObject/fgetcsv_blank_file.phpt b/ext/spl/tests/SplFileObject/csv/fgetcsv_blank_file.phpt similarity index 56% rename from ext/spl/tests/SplFileObject/fgetcsv_blank_file.phpt rename to ext/spl/tests/SplFileObject/csv/fgetcsv_blank_file.phpt index 7bd97a158c43..272f88f9cf56 100644 --- a/ext/spl/tests/SplFileObject/fgetcsv_blank_file.phpt +++ b/ext/spl/tests/SplFileObject/csv/fgetcsv_blank_file.phpt @@ -17,6 +17,11 @@ $file->setFlags(SplFileObject::SKIP_EMPTY); $file->rewind(); var_dump($file->fgetcsv()); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d bool(false) + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d bool(false) diff --git a/ext/spl/tests/gh13685.phpt b/ext/spl/tests/SplFileObject/csv/gh13685.phpt similarity index 73% rename from ext/spl/tests/gh13685.phpt rename to ext/spl/tests/SplFileObject/csv/gh13685.phpt index 3f79f9280f5a..a9bf3121fbb7 100644 --- a/ext/spl/tests/gh13685.phpt +++ b/ext/spl/tests/SplFileObject/csv/gh13685.phpt @@ -39,13 +39,21 @@ try { } ?> ---EXPECT-- +--EXPECTF-- --- Directly call fgetcsv --- + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d string(14) ""A", "B", "C" " + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d string(13) ""D", "E", "F"" + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d string(0) "" --- Use csv control --- + +Deprecated: Method SplFileObject::setCsvControl() is deprecated since 8.6 in %s on line %d string(14) ""A", "B", "C" " string(13) ""D", "E", "F"" diff --git a/ext/spl/tests/gh16217.phpt b/ext/spl/tests/SplFileObject/csv/gh16217.phpt similarity index 91% rename from ext/spl/tests/gh16217.phpt rename to ext/spl/tests/SplFileObject/csv/gh16217.phpt index c6a0846e64f9..fb57b43dea05 100644 --- a/ext/spl/tests/gh16217.phpt +++ b/ext/spl/tests/SplFileObject/csv/gh16217.phpt @@ -28,7 +28,8 @@ try { echo "Done\n"; ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Method SplFileObject::fputcsv() is deprecated since 8.6 in %s on line %d fputcsv: Error: Object not initialized next: Error: Object not initialized next (READ_AHEAD): Error: Object not initialized From 8c0d1023c53d3c42507a9bf9c5c1d28c5cf94623 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 24 Aug 2026 17:10:55 +0100 Subject: [PATCH 2/3] phar tests --- ext/phar/tests/phar_oo_008.phpt | 64 ++++------- ext/phar/tests/phar_oo_009_fgetcsv.phpt | 142 ++++++++++++++++++++++++ 2 files changed, 163 insertions(+), 43 deletions(-) create mode 100644 ext/phar/tests/phar_oo_009_fgetcsv.phpt diff --git a/ext/phar/tests/phar_oo_008.phpt b/ext/phar/tests/phar_oo_008.phpt index f1ef081f12a6..8121ca8f1056 100644 --- a/ext/phar/tests/phar_oo_008.phpt +++ b/ext/phar/tests/phar_oo_008.phpt @@ -29,53 +29,34 @@ foreach($f as $k => $v) echo "$k=>$v\n"; } -class MyCSVFile extends SplFileObject +class MyFile extends SplFileObject { - function current(): array|false + function current(): string { - return parent::fgetcsv(',', '"', escape: ''); + return parent::fgets(); } } -$phar->setInfoClass('MyCSVFile'); -/** @var MyCSVFile $v */ +$phar->setInfoClass('MyFile'); +/** @var MyFile $v */ $v = $phar['a.csv']; echo "===3===\n"; while(!$v->eof()) { - echo $v->key() . "=>" . join('|', $v->fgetcsv(escape: '')) . "\n"; + echo $v->key() . "=>" . $v->fgets() . "\n"; } echo "===4===\n"; $v->rewind(); while(!$v->eof()) { - $l = $v->fgetcsv(escape: ''); - echo $v->key() . "=>" . join('|', $l) . "\n"; + $l = $v->fgets(); + echo $v->key() . "=>" . $l . "\n"; } echo "===5===\n"; foreach($v as $k => $d) -{ - echo "$k=>" . join('|', $d) . "\n"; -} - -class MyCSVFile2 extends SplFileObject -{ - function getCurrentLine(): string - { - echo __METHOD__ . "\n"; - return implode('|', parent::fgetcsv(',', '"', escape: '')); - } -} - -$phar->setInfoClass('MyCSVFile2'); -/** @var MyCSVFile2 $v */ -$v = $phar['a.csv']; - -echo "===6===\n"; -foreach($v as $k => $d) { echo "$k=>" . $d . "\n"; } @@ -98,21 +79,18 @@ __halt_compiler(); 1=>2,a,b 2=>3,"c","'e'" ===3=== -0=>1|2|3 -0=>2|a|b -1=>3|c|'e' +0=>1,2,3 + +1=>2,a,b + +2=>3,"c","'e'" ===4=== -0=>1|2|3 -1=>2|a|b -2=>3|c|'e' +1=>1,2,3 + +2=>2,a,b + +3=>3,"c","'e'" ===5=== -0=>1|2|3 -1=>2|a|b -2=>3|c|'e' -===6=== -MyCSVFile2::getCurrentLine -1=>1|2|3 -MyCSVFile2::getCurrentLine -3=>2|a|b -MyCSVFile2::getCurrentLine -5=>3|c|'e' +1=>1,2,3 + +3=>3,"c","'e'" diff --git a/ext/phar/tests/phar_oo_009_fgetcsv.phpt b/ext/phar/tests/phar_oo_009_fgetcsv.phpt new file mode 100644 index 000000000000..b9939469bde3 --- /dev/null +++ b/ext/phar/tests/phar_oo_009_fgetcsv.phpt @@ -0,0 +1,142 @@ +--TEST-- +Phar object: iterating via SplFileObject +--EXTENSIONS-- +phar +--INI-- +phar.require_hash=0 +--FILE-- +setInfoClass('SplFileObject'); + +$f = $phar['a.csv']; +echo "===1===\n"; +foreach($f as $k => $v) +{ + echo "$k=>$v\n"; +} + +$f->setFlags(SplFileObject::DROP_NEW_LINE); + +echo "===2===\n"; +foreach($f as $k => $v) +{ + echo "$k=>$v\n"; +} + +class MyCSVFile extends SplFileObject +{ + function current(): array|false + { + return parent::fgetcsv(',', '"', escape: ''); + } +} + +$phar->setInfoClass('MyCSVFile'); +/** @var MyCSVFile $v */ +$v = $phar['a.csv']; + +echo "===3===\n"; +while(!$v->eof()) +{ + echo $v->key() . "=>" . join('|', $v->fgetcsv(escape: '')) . "\n"; +} + +echo "===4===\n"; +$v->rewind(); +while(!$v->eof()) +{ + $l = $v->fgetcsv(escape: ''); + echo $v->key() . "=>" . join('|', $l) . "\n"; +} + +echo "===5===\n"; +foreach($v as $k => $d) +{ + echo "$k=>" . join('|', $d) . "\n"; +} + +class MyCSVFile2 extends SplFileObject +{ + function getCurrentLine(): string + { + echo __METHOD__ . "\n"; + return implode('|', parent::fgetcsv(',', '"', escape: '')); + } +} + +$phar->setInfoClass('MyCSVFile2'); +/** @var MyCSVFile2 $v */ +$v = $phar['a.csv']; + +echo "===6===\n"; +foreach($v as $k => $d) +{ + echo "$k=>" . $d . "\n"; +} + +?> +--CLEAN-- + +--EXPECTF-- +===1=== +0=>1,2,3 + +1=>2,a,b + +2=>3,"c","'e'" +===2=== +0=>1,2,3 +1=>2,a,b +2=>3,"c","'e'" +===3=== + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +0=>1|2|3 + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +0=>2|a|b + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +1=>3|c|'e' +===4=== + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +0=>1|2|3 + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +1=>2|a|b + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +2=>3|c|'e' +===5=== + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +0=>1|2|3 + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +1=>2|a|b + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +2=>3|c|'e' +===6=== +MyCSVFile2::getCurrentLine + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +1=>1|2|3 +MyCSVFile2::getCurrentLine + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +3=>2|a|b +MyCSVFile2::getCurrentLine + +Deprecated: Method SplFileObject::fgetcsv() is deprecated since 8.6 in %s on line %d +5=>3|c|'e' From 67c11656282d1ce627c4a73335b2a7f2a5f15aab Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 24 Aug 2026 17:29:57 +0100 Subject: [PATCH 3/3] fix borked test? --- ext/phar/tests/phar_oo_009_fgetcsv.phpt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/phar/tests/phar_oo_009_fgetcsv.phpt b/ext/phar/tests/phar_oo_009_fgetcsv.phpt index b9939469bde3..edcb98b825a9 100644 --- a/ext/phar/tests/phar_oo_009_fgetcsv.phpt +++ b/ext/phar/tests/phar_oo_009_fgetcsv.phpt @@ -83,7 +83,7 @@ foreach($v as $k => $d) ?> --CLEAN-- --EXPECTF--