亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

也就是我可以這樣用my_custom 'parms'?

也就是我可以這樣用my_custom 'parms'?

PHP
慕少森 2023-04-18 19:15:44
我發現兩種用法都可以require('functions.php')和require 'functions.php',那么它在php中到底是語法還是函數呢?我們能否在自己寫php插件時也實現這樣的用法?
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

語法
Zend/zend_language_scanner.l

<ST_IN_SCRIPTING>"eval" {	return T_EVAL;
}

<ST_IN_SCRIPTING>"include" {	return T_INCLUDE;
}

<ST_IN_SCRIPTING>"include_once" {	return T_INCLUDE_ONCE;
}

<ST_IN_SCRIPTING>"require" {	return T_REQUIRE;
}

<ST_IN_SCRIPTING>"require_once" {	return T_REQUIRE_ONCE;
}

Zend/zend_language_parser.y

internal_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.c

void 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);
}


查看完整回答
反對 回復 2023-04-21
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

require是 PHP 中的關鍵字。

f()這樣的用法并不意味著f是函數。例如,print('hi'也可以,但是 print 并非函數。


查看完整回答
反對 回復 2023-04-21
  • 2 回答
  • 0 關注
  • 156 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號