This is a collection of questions that come up every now and then about syntax in PHP. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.
It used to be hard to find questions about operators and other syntax tokens.¹
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from …
这是关于编程PHP时可能遇到的警告,错误和通知的一些答案,并且不知道如何修复.这也是社区Wiki,因此邀请每个人参与添加和维护此列表.
Stack Overflow上经常弹出诸如"已发送标头"或"调用非对象成员"之类的问题.这些问题的根本原因总是一样的.因此,这些问题的答案通常会重复,然后显示OP在他/她的特定情况下要改变哪一行.这些答案不会为网站添加任何价值,因为它们仅适用于OP的特定代码.具有相同错误的其他用户不能轻易地从中读取解决方案,因为它们过于本地化.这很难过,因为一旦你理解了根本原因,修复错误是微不足道的.因此,该列表试图以一般的方式解释解决方案.
如果您的问题已被标记为重复,请在下面找到您的错误消息并将修复程序应用于您的代码.答案通常包含进一步调查的链接,以防单独的一般答案不清楚.
如果您想贡献,请添加您的"收藏"错误消息,警告或通知,每个答案一个,简短说明它意味着什么(即使它只是突出显示其手册页的术语),可能的解决方案或调试方法和现有问答的清单.此外,随时改善任何现有的答案.
另外,请参阅
我很困惑PHP中的"静态"和"动态"函数和对象如何协同工作,特别是关于__callStatic().
__callStatic()的工作原理如下:
你可以有一个普通的类MyClass,你可以在类中放置一个名为__callStatic()的静态函数,只有当MyClass没有你想要的名字的静态函数时才会调用它.
即我打电话
MyClass::newFunction();
newFunction()被静态调用,但MyClass没有声明它.所以,然后__callStatic()被调用,你可以说Run Code Online (Sandbox Code Playgroud)$myObject=new SomeOtherClass(); $myObject->newFunction();它调用你想要的函数但是在其他一些对象上.
精简版:
换句话说,__ callStatic()执行此操作:
MyClass::newFunction();
Run Code Online (Sandbox Code Playgroud)
这隐藏了这个:
(new SomeOtherClass())->newFunction();
Run Code Online (Sandbox Code Playgroud)
说什么呢?看起来代码从类中调用静态函数看起来就是从其他类调用该函数并通过实例化调用它,而不是静态调用.
请解释一下!
为什么这样做?你可以在其他地方做这样的事情,比如C++或Java吗?我正在寻找关于语言中静态和动态函数的简短而简洁但有用的解释,在这种情况下,无论是__callStatic()violates还是conforms语言结构的大图.或者它完全是一种新的语言结构.