php中require函数,php中的require到底是函数还是语法

我发现两种用法都可以require('functions.php')和require 'functions.php',那么它在php中到底是语法还是函数呢?我们能否在自己写php插件时也实现这样的用法?也就是可以这样用my_custom 'parms'。

回复内容:

我发现两种用法都可以require('functions.php')和require 'functions.php',那么它在php中到底是语法还是函数呢?我们能否在自己写php插件时也实现这样的用法?也就是可以这样用my_custom 'parms'。

语法

Zend/zend_language_scanner.l"eval" {

return T_EVAL;

}

"include" {

return T_INCLUDE;

}

"include_once" {

return T_INCLUDE_ONCE;

}

"require" {

return T_REQUIRE;

}

"require_once" {

return T_REQUIRE_ONCE;

}

Zend/zend_language_parser.yinternal_functions_in_yacc:

T_ISSET '(' isset_variables ')' { $$ = $3; }

|T_EMPTY '(' variable ')'{ zend_do_isset_or_isempty(ZEND_ISEMPTY, &$$, &$3 TSRMLS_CC); }

|T_INCLUDE expr { zend_do_include_or_eval(ZEND_INCLUDE, &$$, &$2 TSRMLS_CC); }

|T_INCLUDE_ONCE expr { zend_do_include_or_eval(ZEND_INCLUDE_ONCE, &$$, &$2 TSRMLS_CC); }

|T_EVAL '(' expr ')' { zend_do_include_or_eval(ZEND_EVAL, &$$, &$3 TSRMLS_CC); }

|T_REQUIRE expr{ zend_do_include_or_eval(ZEND_REQUIRE, &$$, &$2 TSRMLS_CC); }

|T_REQUIRE_ONCE expr{ zend_do_include_or_eval(ZEND_REQUIRE_ONCE, &$$, &$2 TSRMLS_CC); }

;

Zend/zend_compile.cvoid zend_do_include_or_eval(int type, znode *result, const znode *op1 TSRMLS_DC)

{

zend_do_extended_fcall_begin(TSRMLS_C);

{

zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);

opline->opcode = ZEND_INCLUDE_OR_EVAL;

opline->result_type = IS_VAR;

opline->result.var = get_temporary_variable(CG(active_op_array));

SET_NODE(opline->op1, op1);

SET_UNUSED(opline->op2);

opline->extended_value = type;

GET_NODE(result, opline->result);

}

zend_do_extended_fcall_end(TSRMLS_C);

}

require是 PHP 中的关键字。

f()这样的用法并不意味着f是函数。例如,print('hi'也可以,但是 print 并非函数。

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值