php 源码阅读 chr

php chr源码

 

[cpp]
  1. PHP_FUNCTION(chr)
  2. {
  3.     long c;
  4.     char temp[2];
  5.     if (ZEND_NUM_ARGS() != 1) {
  6.         WRONG_PARAM_COUNT;
  7.     }
  8.     if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, “l”, &c) == FAILURE) {
  9.         c = 0;
  10.     }
  11.     temp[0] = (char)c;
  12.     temp[1] = ‘\0’;
  13.     RETURN_STRINGL(temp, 1, 1);
  14. }

 

 

 

 

这个是判断参数是否是1个如果不是一个发出警告

 

WRONG_PARAM_COUNT

可写成

zend_wrong_param_count(TSRMLS_C);

return;

 

[cpp]
  1. if (ZEND_NUM_ARGS() != 1) {
  2.         WRONG_PARAM_COUNT;
  3. }

 

我们可以把代码简化成

 

[cpp]
  1. chr(long c) {
  2.     char temp[2];
  3.     temp[0] = (char) c;
  4.     temp[1] = ‘\0’;
  5.     return temp[0];
  6. }
  7. int main(int argc, char** argv) {
  8.     long c = 65;
  9.     printf(“%c”, chr(c));
  10. }

所以php chr函数 核心就是 (char)c

标签