suit: Frage zu strcmp

Beitrag lesen

wenn ich die Quellen von PHP richtig lese, dann funktioniert die API Funktion strcmp() so:

ZEND_API int zend_binary_strcmp(const char *s1, uint len1, const char s2, uint len2) / {{{ */
{
int retval;

retval = memcmp(s1, s2, MIN(len1, len2));
if (!retval) {
return (len1 - len2);
} else {
return retval;
}
}
/* }}} */

  
Ich würde sagen, das kommt aus zend\_builtin\_functions.c:  
  
~~~c
/* {{{ proto int strcmp(string str1, string str2)  
   Binary safe string comparison */  
ZEND_FUNCTION(strcmp)  
{  
	zval **s1, **s2;  
	  
	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &s1, &s2) == FAILURE) {  
		ZEND_WRONG_PARAM_COUNT();  
	}  
	convert_to_string_ex(s1);  
	convert_to_string_ex(s2);  
	RETURN_LONG(zend_binary_zval_strcmp(*s1, *s2));  
}  
/* }}} */

Afaik steht alles was PHP_FUNCTION bzw. ZEND_FUNCTION heisst für PHP (sprich für den Benutzer) als Funktion zur Verfügung.

http://php.net/manual/en/internals2.ze1.zendapi.php
http://www.php.net/manual/en/internals2.funcs.php