mirror of
https://github.com/php/php-src.git
synced 2025-01-19 10:13:38 +08:00
ZipArchive implements countable, added ZipArchive::count() method
This commit is contained in:
parent
161c378cc8
commit
569d164c4a
3
NEWS
3
NEWS
@ -49,6 +49,9 @@ PHP NEWS
|
||||
. Fixed bug #74883 (SQLite3::__construct() produces "out of memory" exception
|
||||
with invalid flags). (Anatol)
|
||||
|
||||
- ZIP:
|
||||
. ZipArchive implements countable, added ZipArchive::count() method. (Remi)
|
||||
|
||||
06 Jul 2017, PHP 7.2.0alpha3
|
||||
|
||||
- Core:
|
||||
|
@ -143,6 +143,8 @@ PHP 7.2 UPGRADE NOTES
|
||||
ZipArchive::EM_AES_192
|
||||
ZipArchive::EM_AES_256
|
||||
. accept 'password' from zip stream context
|
||||
. ZipArchive implements countable, added ZipArchive::count() method.
|
||||
|
||||
|
||||
========================================
|
||||
3. Changes in SAPI modules
|
||||
|
@ -28,6 +28,11 @@
|
||||
#include "ext/standard/php_string.h"
|
||||
#include "ext/pcre/php_pcre.h"
|
||||
#include "ext/standard/php_filestat.h"
|
||||
#if PHP_VERSION_ID >= 70200
|
||||
#include "zend_interfaces.h"
|
||||
#elif defined(HAVE_SPL)
|
||||
#include "ext/spl/spl_iterators.h"
|
||||
#endif
|
||||
#include "php_zip.h"
|
||||
|
||||
/* zip_open is a macro for renaming libzip zipopen, so we need to use PHP_NAMED_FUNCTION */
|
||||
@ -1548,6 +1553,23 @@ static ZIPARCHIVE_METHOD(close)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool ZipArchive::count()
|
||||
close the zip archive */
|
||||
static ZIPARCHIVE_METHOD(count)
|
||||
{
|
||||
struct zip *intern;
|
||||
zval *self = getThis();
|
||||
|
||||
if (!self) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
ZIP_FROM_OBJECT(intern, self);
|
||||
|
||||
RETVAL_LONG(zip_get_num_files(intern));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto string ZipArchive::getStatusString()
|
||||
* Returns the status error message, system and/or zip messages */
|
||||
static ZIPARCHIVE_METHOD(getStatusString)
|
||||
@ -3069,6 +3091,7 @@ static const zend_function_entry zip_class_functions[] = {
|
||||
ZIPARCHIVE_ME(open, arginfo_ziparchive_open, ZEND_ACC_PUBLIC)
|
||||
ZIPARCHIVE_ME(setPassword, arginfo_ziparchive_setpassword, ZEND_ACC_PUBLIC)
|
||||
ZIPARCHIVE_ME(close, arginfo_ziparchive__void, ZEND_ACC_PUBLIC)
|
||||
ZIPARCHIVE_ME(count, arginfo_ziparchive__void, ZEND_ACC_PUBLIC)
|
||||
ZIPARCHIVE_ME(getStatusString, arginfo_ziparchive__void, ZEND_ACC_PUBLIC)
|
||||
ZIPARCHIVE_ME(addEmptyDir, arginfo_ziparchive_addemptydir, ZEND_ACC_PUBLIC)
|
||||
ZIPARCHIVE_ME(addFromString, arginfo_ziparchive_addfromstring, ZEND_ACC_PUBLIC)
|
||||
@ -3141,6 +3164,11 @@ static PHP_MINIT_FUNCTION(zip)
|
||||
php_zip_register_prop_handler(&zip_prop_handlers, "numFiles", php_zip_get_num_files, NULL, NULL, IS_LONG);
|
||||
php_zip_register_prop_handler(&zip_prop_handlers, "filename", NULL, NULL, php_zipobj_get_filename, IS_STRING);
|
||||
php_zip_register_prop_handler(&zip_prop_handlers, "comment", NULL, php_zipobj_get_zip_comment, NULL, IS_STRING);
|
||||
#if PHP_VERSION_ID >= 70200
|
||||
zend_class_implements(zip_class_entry, 1, zend_ce_countable);
|
||||
#elif defined(HAVE_SPL)
|
||||
zend_class_implements(zip_class_entry, 1, spl_ce_Countable);
|
||||
#endif
|
||||
|
||||
REGISTER_ZIP_CLASS_CONST_LONG("CREATE", ZIP_CREATE);
|
||||
REGISTER_ZIP_CLASS_CONST_LONG("EXCL", ZIP_EXCL);
|
||||
|
@ -37,7 +37,7 @@ extern zend_module_entry zip_module_entry;
|
||||
#define ZIP_OVERWRITE ZIP_TRUNCATE
|
||||
#endif
|
||||
|
||||
#define PHP_ZIP_VERSION "1.14.0"
|
||||
#define PHP_ZIP_VERSION "1.15.0"
|
||||
|
||||
#define ZIP_OPENBASEDIR_CHECKPATH(filename) php_check_open_basedir(filename)
|
||||
|
||||
|
26
ext/zip/tests/oo_count.phpt
Normal file
26
ext/zip/tests/oo_count.phpt
Normal file
@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
ziparchive::count()
|
||||
--SKIPIF--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
if(!extension_loaded('zip')) die('skip');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$dirname = dirname(__FILE__) . '/';
|
||||
$file = $dirname . 'test.zip';
|
||||
|
||||
$zip = new ZipArchive;
|
||||
if (!$zip->open($file)) {
|
||||
exit('failed');
|
||||
}
|
||||
|
||||
var_dump($zip->numFiles, count($zip), $zip->numFiles == count($zip));
|
||||
?>
|
||||
Done
|
||||
--EXPECTF--
|
||||
int(4)
|
||||
int(4)
|
||||
bool(true)
|
||||
Done
|
Loading…
Reference in New Issue
Block a user