cvs: /php4 ChangeLog /php4/ext/standard basic_functions.c basic_functions.h soundex.c /php4/tests testobj

From: Date: Wed, 28 Jul 1999 17:58:39 +0000
Subject: cvs: /php4 ChangeLog /php4/ext/standard basic_functions.c basic_functions.h soundex.c /php4/tests testobj
Groups: php.version4 
Request: Send a blank email to php-version4+get-2914@lists.php.net to get a copy of this message
andi Wed Jul 28 13:58:39 1999 EDT Modified files: /php4 ChangeLog /php4/ext/standard basic_functions.c basic_functions.h soundex.c /php4/tests testobj Log: - Added get_class($obj), get_parent_class($obj) and method_exists($obj,"name") Index: php4/ChangeLog diff -u php4/ChangeLog:1.28 php4/ChangeLog:1.29 --- php4/ChangeLog:1.28 Tue Jul 27 16:33:42 1999 +++ php4/ChangeLog Wed Jul 28 13:58:37 1999 @@ -2,6 +2,9 @@ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ??? ?? 1999, Version 4.0 Beta 2 +- Added get_class($obj), get_parent_class($obj) and method_exists($obj,"name") + (Andi & Zeev) +- Fixed various inheritance problems (Andi & Zeev, libzend) - Children now inherit their parent's constructor, if they do not supply a constructor of their own. - Fixed runtime inheritence of classes (parent methods/properties were Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.60 php4/ext/standard/basic_functions.c:1.61 --- php4/ext/standard/basic_functions.c:1.60 Wed Jul 28 09:59:35 1999 +++ php4/ext/standard/basic_functions.c Wed Jul 28 13:58:37 1999 @@ -272,6 +272,9 @@ PHP_FE(is_string, first_arg_allow_ref) PHP_FE(is_array, first_arg_allow_ref) PHP_FE(is_object, first_arg_allow_ref) + PHP_FE(get_class, NULL) + PHP_FE(get_parent_class, NULL) + PHP_FE(method_exists, NULL) PHP_FE(leak, NULL) PHP_FE(error_log, NULL) @@ -1594,12 +1597,70 @@ } -PHP_FUNCTION(is_long) { php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_LONG); } -PHP_FUNCTION(is_double) { php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_DOUBLE); } -PHP_FUNCTION(is_string) { php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_STRING); } -PHP_FUNCTION(is_array) { php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_ARRAY); } -PHP_FUNCTION(is_object) { php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_OBJECT); } +PHP_FUNCTION(is_long) +{ + php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_LONG); +} + +PHP_FUNCTION(is_double) +{ + php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_DOUBLE); +} + +PHP_FUNCTION(is_string) +{ + php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_STRING); +} + +PHP_FUNCTION(is_array) +{ + php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_ARRAY); +} + +PHP_FUNCTION(is_object) +{ + php3_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_OBJECT); +} + +PHP_FUNCTION(get_class) +{ + pval *arg; + + if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &arg)==FAILURE) { + RETURN_FALSE; + } + if (arg->type != IS_OBJECT) { + RETURN_FALSE; + } + RETURN_STRINGL(arg->value.obj.ce->name, arg->value.obj.ce->name_length, 1); +} + +PHP_FUNCTION(get_parent_class) +{ + pval *arg; + + if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &arg)==FAILURE) { + RETURN_FALSE; + } + if ((arg->type != IS_OBJECT) || !arg->value.obj.ce->parent) { + RETURN_FALSE; + } + RETURN_STRINGL(arg->value.obj.ce->parent->name, arg->value.obj.ce->parent->name_length, 1); +} +PHP_FUNCTION(method_exists) +{ + pval *arg1, *arg2; + + if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &arg1, &arg2)==FAILURE) { + RETURN_FALSE; + } + if (arg1->type != IS_OBJECT) { + RETURN_FALSE; + } + convert_to_string(arg2); + RETURN_LONG(zend_hash_exists(&arg1->value.obj.ce->function_table, arg2->value.str.val, arg2->value.str.len+1)); +} PHP_FUNCTION(leak) { Index: php4/ext/standard/basic_functions.h diff -u php4/ext/standard/basic_functions.h:1.12 php4/ext/standard/basic_functions.h:1.13 --- php4/ext/standard/basic_functions.h:1.12 Mon Jul 26 16:09:08 1999 +++ php4/ext/standard/basic_functions.h Wed Jul 28 13:58:38 1999 @@ -29,7 +29,7 @@ */ -/* $Id: basic_functions.h,v 1.12 1999/07/26 20:09:08 andrey Exp $ */ +/* $Id: basic_functions.h,v 1.13 1999/07/28 17:58:38 andi Exp $ */ #ifndef _BASIC_FUNCTIONS_H #define _BASIC_FUNCTIONS_H @@ -92,6 +92,10 @@ PHP_FUNCTION(is_string); PHP_FUNCTION(is_array); PHP_FUNCTION(is_object); + +PHP_FUNCTION(get_class); +PHP_FUNCTION(get_parent_class); +PHP_FUNCTION(method_exists); PHP_FUNCTION(leak); Index: php4/ext/standard/soundex.c diff -u php4/ext/standard/soundex.c:1.5 php4/ext/standard/soundex.c:1.6 --- php4/ext/standard/soundex.c:1.5 Wed Jul 28 07:26:58 1999 +++ php4/ext/standard/soundex.c Wed Jul 28 13:58:38 1999 @@ -15,7 +15,7 @@ | Author: Bjørn Borud - Guardian Networks AS <borud@guardian.no> | +----------------------------------------------------------------------+ */ -/* $Id: soundex.c,v 1.5 1999/07/28 11:26:58 danny Exp $ */ +/* $Id: soundex.c,v 1.6 1999/07/28 17:58:38 andi Exp $ */ #include "php.h" #include <stdlib.h> @@ -29,7 +29,7 @@ PHP_FUNCTION(soundex) { char *somestring; - int i, small, len, code, last; + int i, _small, len, code, last; pval *arg; char soundex[4 + 1]; @@ -73,16 +73,16 @@ /* build soundex string */ last = -1; - for (i = 0, small = 0; i < len && small < 4; i++) { + for (i = 0, _small = 0; i < len && _small < 4; i++) { /* convert chars to upper case and strip non-letter chars */ /* BUG: should also map here accented letters used in non */ /* English words or names (also found in English text!): */ /* esstsett, thorn, n-tilde, c-cedilla, s-caron, ... */ code = toupper(somestring[i]); if (code >= 'A' && code <= 'Z') { - if (small == 0) { + if (_small == 0) { /* remember first valid char */ - soundex[small++] = code; + soundex[_small++] = code; last = soundex_table[code - 'A']; } else { @@ -92,7 +92,7 @@ code = soundex_table[code - 'A']; if (code != last) { if (code != 0) { - soundex[small++] = code; + soundex[_small++] = code; } last = code; } @@ -100,13 +100,13 @@ } } /* pad with '0' and terminate with 0 ;-) */ - while (small < 4) { - soundex[small++] = '0'; + while (_small < 4) { + soundex[_small++] = '0'; } - soundex[small] = '\0'; + soundex[_small] = '\0'; - return_value->value.str.val = estrndup(soundex, small); - return_value->value.str.len = small; + return_value->value.str.val = estrndup(soundex, _small); + return_value->value.str.len = _small; return_value->type = IS_STRING; } /* }}} */ Index: php4/tests/testobj diff -u php4/tests/testobj:1.2 php4/tests/testobj:1.3 --- php4/tests/testobj:1.2 Mon Jul 26 12:54:41 1999 +++ php4/tests/testobj Wed Jul 28 13:58:38 1999 @@ -1,14 +1,30 @@ <? +define("endl","\n"); + +if (1) { class foobar { function foobar() { - print "foobar!\n"; $this->initialized = 1; } }; +class barbara extends foobar { + +}; +} + $foo = new foobar; // or die("Unable to construct foobar\n"); -print $foo->initialized; +//print $foo->initialized; + +$boo = new barbara; +print get_class($foo).endl; +print get_parent_class($foo).endl; +print get_class($boo).endl; +print get_parent_class($boo).endl; +print method_exists($foo,"foobar").endl; +print method_exists($boo,"foobar").endl; +print method_exists($boo,"barbara").endl; //$word = new COm("word.application"); //$word->visible = true; //sleep(5);

« previous php.version4 (#2914) next »