下面的代码是我在 Java 中缓存对象的方式。
class Account{
private static ArrayList<Account> accounts = new ArrayList<Account>(); //Array that holds Account objects
private String username; //Unique Name or Username
public Account(String username) { // constructor
this.username = username;
Account.accounts.add(this); //Add object to accounts Array
}
public String getUsername() {
return this.username; // Return username
}
public Account getAccount(String username) { //Get object "Account" with username
for (Account acc: Account.accounts) { //Foreach loop that loop over all accounts from the Array
if (acc.getUsername() == username) return acc; // Return Account object if given username == object's username
}
return null;
}
}
我对其进行了评论,因此即使您不了解 Java 也能理解它,但 Java OOP 与 PHP OOP 类似。
通过上面的 Java 代码,我可以将所有对象保存在一个数组中,因此它不会一直查询数据库。
1) 我想知道我是否可以用 PHP 做一些类似的事情来加速代码和缓存类。如果可能的话,请给我举个例子。如果不是,实现这一目标的最佳方法是什么?
2)在面向对象编程时可以使用哪些良好实践来保持低内存使用率?
提前致谢
最佳答案
Java 应用程序和 PHP 应用程序之间的最大区别在于,Java 应用程序通常是一个持续运行的程序,同时处理多个传入连接,而 PHP 实例由托管 Web 服务器针对每个单独的请求启动和关闭。这意味着您加载的任何类或您实例化的对象或您分配的变量只有几毫秒的生命周期(在一个相当快的应用程序中)。静态类属性的工作方式与 Java 相同,但是,整个应用程序会在几毫秒后被拆除,因此这不能用作长期缓存。更重要的是,每个单独的 HTTP 请求都是其自己的独立线程,因此在一个线程中分配某些内容不会使其在任何其他同时或后续线程中可见。
要缓存一些交叉请求,您需要一个外部数据存储。为此,您有多种选择,具体取决于您最适合的套件:
关于PHP - 静态类和缓存类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23100356/