Wol*_*'08 2 php syntax arguments coding-style apostrophe
我只是注意到我可以使用一个变量作为参数,就像这样:$variable = "This's a string."; function('$variable'),而不是这样:function('This's a string');.我可以理解为什么我不能做后者,但是我不明白在第一个例子工作中幕后发生了什么.
你听说过正规语言吗?解析器跟踪上下文,因此,它知道预期的字符是什么,什么不是.
在您关闭已经打开的字符串的那一刻,您将在打开字符串之前返回上下文(即,在这种情况下,在函数调用的上下文中).
相关的php内部代码片段是:
这些是C代码的相关工具,使其工作.它们是PHP内部工作的一部分(特别是Zend引擎).
PHP没有预料到任何东西,它真的通过char读取所有char,并且一旦在语义上下文中发现意外的TOKEN就不会发出解析错误.
在您的情况下,它读取令牌'This',扫描仪匹配新的字符串.然后它继续阅读s,当它找到一个空格时,它会s变成一个常数.由于常量和先前找到的令牌'This'不会形成任何已知的缩减(可能的缩减在我上面给出的解析器链接中描述),解析器会发出类似的错误
意外的T_STRING
正如你可以从这个消息中推断出来的那样,它实际上是指它所发现的东西(或者它希望它发现了什么),所以实际上没有任何预期.
你的问题本身是错误的,因为变量中没有叛逆者(在变量的标识符中).你可能在变量的值中有一个叛逆者.不要混淆他们.值可以单独存在,没有变量:
<?php
'That\'s fine';
42;
Run Code Online (Sandbox Code Playgroud)
(这是一个有效的PHP代码,只是将这些值加载到内存中)