【问题标题】:See Objects of a class in php在 php 中查看类的对象
【发布时间】:2011-08-27 19:50:10
【问题描述】:

我如何查看在 php.ini 中加载了多少个类的对象。对象是否也在服务器上的单个会话中加载?或者在服务器端也可以跟踪来自其他会话的对象?

其实我很困惑。当一个对象被 PHP 加载时,它驻留在哪里?是在浏览器中吗?是否在会话中,会话一过期就过期?

【问题讨论】:

标签: php oop session


【解决方案1】:

这会有帮助吗?

<?php

class Hello {
    public function __construct() {
    }
}

$hello = new Hello;
$hi = new Hello;

$i = 0;

foreach (get_defined_vars() as $key => $value) {
    if (is_object($value) && get_class($value) == 'Hello')
        $i++;
}

echo 'There are ' . $i . ' instances of class Hello';

【讨论】:

    【解决方案2】:

    如何查看 php 中加载了一个类的多少个对象。

    如果你不实际在类的构造函数中保持计数,我认为没有办法做到这一点。

    当一个对象被 PHP 加载时,它驻留在哪里?是在浏览器中吗?是否在会话中,会话一过期就过期?

    它驻留在为该请求调用的 PHP 进程分配的内存中。一旦当前请求完成或被终止(或被unset()),它就会过期。

    会话有助于跨多个请求识别用户。它的存活时间更长 - 当它被销毁、用户的会话 cookie 被删除或会话达到其到期时间时,它就会过期。

    【讨论】:

      【解决方案3】:

      对象只是一个复杂的变量。它可以将几个简单的类型放在一起,并且可以有函数。

      尽管简单类型和对象之间存在许多差异,但对象只是一个变量。对象不会通过会话共享,也不会发送到浏览器,而不仅仅是简单的整数或字符串。

      【讨论】:

        【解决方案4】:

        一个对象只存在于服务器上、内存中,并且只存在于脚本执行的整个生命周期内,除非保存到用户的$_SESSION 中。即使保存后,它也不再是一个对象,而是变成了一个序列化的字符串。它可以在同一会话或以后的会话中再次重构为对象。

        脚本的生命周期是指网络服务器调用它的那一刻,直到脚本最后一行被处理的那一刻。 PHP 引擎可以通过垃圾回收处理脚本不再需要的对象,甚至在脚本完全终止之前。

        【讨论】:

        • 好的!但是我正在浏览wordpress代码并且在玩它时我知道存在一个名为wp_user的对象,即使有一个与wp_user无关的脚本正在运行。你能详细说明一下吗?
        • 我对 WP 不熟悉,无法进一步详细说明。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        相关资源
        最近更新 更多