PHP - 静态类和缓存类

标签 php oop caching

下面的代码是我在 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/

相关文章:

ruby-on-rails - 缓存 WSDL 文件而不是在每个 SOAP 请求时获取它

c# - 以编程方式清除 win 7 中的图标缓存 - 使用 C# 或 Visual Basic 执行 ie4uinit.exe-ClearIconCache

php - MySQL - PHP 事务和表锁

PHPUnit 不会运行生成器函数

Python:在类主体中动态创建子类

java - 在 Java 1.6 中使用不同枚举类型的 String 开关

Android:Volley 不能使用缓存离线工作

php - Eloquent parent trait - 调用未定义的方法

php - 登录到ajax加载首页

java - OOP 二十一点游戏(创建牌组)