freebsd-ports/lang/php52/files/patch-ext_standard_array.c
Dirk Meyer 3acf4c24e2 PHP, which stands for "PHP: Hypertext Preprocessor" is a widely-used Open
Source general-purpose scripting language that is especially suited for
Web development and can be embedded into HTML.  Its syntax draws upon C,
Java, and Perl, and is easy to learn.  The main goal of the language is to
allow web developers to write dynamically generated webpages quickly, but
you can do much more with PHP.

WWW: http://www.php.net/
PR:		145772
Submitted by:	Alex Keda
2010-04-23 15:03:13 +00:00

33 lines
1.2 KiB
C

--- ext/standard/array.c.orig Mon Feb 12 20:20:48 2007
+++ ext/standard/array.c Mon Feb 12 20:22:14 2007
@@ -295,6 +295,7 @@
PHP_FUNCTION(count)
{
zval *array;
+ zend_class_entry **ce_Countable;
long mode = COUNT_NORMAL;
if (zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, "z|l", &array, &mode) == FAILURE)
@@ -308,11 +309,11 @@
RETURN_LONG (php_count_recursive (array, mode TSRMLS_CC));
break;
case IS_OBJECT: {
-#ifdef HAVE_SPL
/* it the object implements Countable we call its count() method */
zval *retval;
- if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) {
+ if (zend_lookup_class_ex("Countable", 9, 0, &ce_Countable TSRMLS_CC) != FAILURE) {
+ if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), *ce_Countable TSRMLS_CC)) {
zend_call_method_with_0_params(&array, NULL, NULL, "count", &retval);
if (retval) {
convert_to_long(retval);
@@ -321,7 +322,7 @@
}
return;
}
-#endif
+ }
/* if not we return the number of properties (not taking visibility into account) */
if (Z_OBJ_HT_P(array)->count_elements) {
RETVAL_LONG(1);