从JavaScript调用PHP静态方法,无需中间PHP脚本

时间:2016-02-08 20:30:00

标签: javascript php ajax methods static

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执行相同的操作?

1 个答案:

答案 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