PHP类通常应该自己在文件中。 静态PHP方法可以在PHP中调用,无需实例化类,如下所示:
<?php
class TestClass
{
static function myStaticFunction()
{
return "The uninstantiated return value";
}
}
echo TestClass::myStaticFunction();
// echos "The uninstantiated return value"
使用Javascript ajax调用实例化PHP类并运行类方法的PHP脚本很容易。
我的问题是:是否可以使用ajax从Javascript调用PHP静态类方法,从而无需中间PHP脚本或类的实例化,同时不违反PHP的类的良好实践将所有文件分开给自己。
我尝试在类构造函数中调用PHP静态方法,并收到错误消息。将所有功能放在构造函数中也会破坏类的实用程序以用于其他目的。
如果可以,请说明如何在不使用中间脚本的情况下使用ajax调用静态PHP类方法。如果之前已经回答过,请在关闭此问题之前提供答案的链接,因为我没有直接找到答案。
如果这是不可能的,为什么PHP可以在没有实例化的情况下调用静态类方法,但Javascript不能通过ajax执行相同的操作?
答案 0 :(得分:0)
请参阅:AJAX request and PHP class functions以获得类似但不完全相同的问题,并提供多个答案。
似乎PHP可以在没有实例化类的情况下调用静态类函数,但是js ajax不能这样做。至少,这是大多数答案的共识。
许多人回复建议使用中间脚本,但这不是问题。问题是如何避免使用中间脚本。
https://stackoverflow.com/users/1006348/rajesh在其他帖子中看到了最佳问题。
https://stackoverflow.com/users/1311025/tomas-prado提出了最佳答案,但在其他帖子中打了折扣的价值。 他建议了一个可以处理任何ajax调用的中间脚本,它只需要实例化一个类和一个包含数据的类方法。我没有尝试过,但我认为这样可行。不需要50个中间脚本。每个ajax调用都将调用相同的PHP中间脚本。数据将命名类和方法,并提供剩余的所需数据。通用中间脚本将解析出类和方法,并在那里发送数据包。类方法将被设计为忽略数据中的前两个字段,因为它们仅用于路由信息。
感谢所有答案。如果有人有更好的答案,请让我们都知道。
jimfuqua