实例作为静态类属性

2023-11-23

是否可以在 PHP 中将类的实例声明为属性?

基本上我想要实现的是:

abstract class ClassA() 
{
  static $property = new ClassB();
}

好吧,我知道我不能这样做,但是除了总是做这样的事情之外还有什么解决方法吗:

if (!isset(ClassA::$property)) ClassA::$property = new ClassB();

您可以使用类似单例的实现:

<?php
class ClassA {

    private static $instance;

    public static function getInstance() {

        if (!isset(self::$instance)) {
            self::$instance = new ClassB();
        }

        return self::$instance;
    }
}
?>

然后你可以通过以下方式引用该实例:

ClassA::getInstance()->someClassBMethod();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实例作为静态类属性 的相关文章

随机推荐

  • 如何让 scalaz IDEA 实时模板适用于符号方法?

    中的许多方法scalaz具有符号 unicode 等价物 例如forever and 当然 我的做法是错误的 符号方法确实有 ASCII 等价物 该项目包含一个实时模板 XML 文件对于 IDEA 所以这些可以是自动完成 我相信通过使用fo
  • Java正则表达式仅第一个匹配

    如何告诉以下正则表达式仅查找第一个匹配项 以下代码不断查找字符串中所有可能的正则表达式 即我只寻找子字符串的索引 200 800 50 public static void main String args String regex Str
  • PHP 用 POST 数据打开另一个网页

    我是 PHP 新手 我正在尝试做一些可能是不好的做法并且很可能是不可能的事情 我基本上只是将一些东西组合在一起来测试我的知识并看看 PHP 可以做什么 我有一个带有收集数据的表单的网页 它被提交给一个 PHP 脚本 该脚本执行一系列处理 但
  • Android 文本视图中的多个可点击字符串

    我正在创建一个小型 Android 应用程序 我想在文本视图中显示文本 并有多个部分可供单击 每个应该显示一些不同的消息 最后 我设法找出如何在一个文本视图中显示多个跨度 但不幸的是 onClick 方法不起作用 根本没有任何反应 甚至连一
  • 计算数据帧的每一行与另一个数据帧中的所有其他行之间的欧氏距离

    我需要生成一个数据帧 该数据帧的每一行与另一个数据帧的所有其他行之间具有最小欧几里德距离 我的两个数据帧都很大 大约 40 000 行 这是我到目前为止可以解决的问题 x lt matrix c 3 6 3 4 8 nrow 5 ncol
  • 如何复制数组?

    我在Delphi中遇到了这样一个基本问题 我无法解决它 My Code 注意 DataR在下面的方法中是本地的 但通常它是一个类变量 只是为了概念它是本地的 class procedure TCelebrity BeginRead var
  • 参数包扩展顺序

    我有两个函数来读取二进制文件 第一个函数读取sizeof T 文件中的字节 template
  • C 中 EOF 问题

    我正在编写一个程序 该程序应该读取两个可以包含换行符和各种其他字符的字符串 因此 我使用 EOF Ctrl Z 或 Ctrl D 来结束字符串 这对于第一个变量来说效果很好 但是对于第二个变量来说 这似乎是有问题的 因为显然有东西卡在输入缓
  • Git 删除重复提交

    经过一番使用遥控器后 我的所有提交最终都增加了一倍 例如 代替 C3107 C3 C2 C1 I got C3107 C3107 C3 C3 C2 C2 C1 C1 其中双重提交具有相同的名称但不同的哈希值 问题是我注意到它太晚了 而且我没
  • Android Studio(海豚 | 2021.3.1)和(电鳗 | 2022.1.1)不显示布局预览

    我正在使用 Android Studio Dolphin 2021 3 1 电鳗 2022年1月1日 Android studio 更新后花栗鼠 2021 2 1 至 Android Studio Dolphin 2021 3 1 我的所有
  • MPI_Reduce 是阻塞(还是天然屏障)?

    我有下面的 C 代码片段 它基本上使用经典的蒙特卡罗技术计算 pi srand48 unsigned time 0 my rank for int i 0 i lt part points i double x drand48 double
  • 用于单元测试的备用 SLF4J 绑定或配置?

    我希望能够将用于单元测试的 SLF4J 绑定切换到简单版本 但似乎没有简单的方法来配置它 基本上 我构建的项目记录到一个文件 我希望在单元测试时它是控制台 我之前使用过 antrun maven 插件对 persistence xml 文件
  • 用于检查锁定文件的应用程序的 PowerShell 脚本?

    在 PowerShell 中使用 如何检查应用程序是否锁定文件 我喜欢检查哪个进程 应用程序正在使用该文件 以便我可以关闭它 您可以使用SysInternals工具handle exe 尝试这样的事情 PS gt handleOut han
  • 为什么shortValue()方法是具体的,而intValue()方法是抽象到java.lang.Number中的?

    我已经阅读了源代码java lang Number我想知道为什么 intValue longValue floatValue doubleValue 是抽象的但是 shortValue byteValue 混凝土 源代码 public ab
  • OpenCart 中基于路由向页面添加 CSS 样式表

    我正在为客户端商店使用 opencart 版本 1 5 1 3 1 并且想知道对其进行编码的最佳方法是什么 以便我可以为某些路线添加某些样式表 例如 在我的类别页面上 我希望有一个与默认样式不同的样式表 或者一个将使用我的自定义表覆盖默认样
  • 当可观察数组为空时如何显示无数据?

    我是 Knockout js 的新手 我正在尝试将数据从可观察数组显示到table 我遇到的问题是它生成两个tbody标签 但是如果我将空检查逻辑移入foreach 循环 No Data确实出现了 有没有更好的方法来使用表来做到这一点 我不
  • 如何将 Servlet 重定向到给定的 URL

    目前 我正在使用 request getRequestDispatcher thePage html forward request response 在我的 servlet 中向用户显示新页面 但 servlet 的 URL 保留在浏览器
  • 如何将以前版本的 Python 安装到 virtualenv 中? [复制]

    这个问题在这里已经有答案了 我在全局安装了Python3 然后创建了一个virtualenv 现在我想把里面的python版本改成Python2 7 尝试安装Python2 7时我只能选择安装到我的硬盘上 如何指定 virtualenv 中
  • Nhibernate 标准:“选择 max(id)...”

    我可以使用 Criteria 执行 t sql 命令来选择表中列的最大值吗 从客户中选择 cus id max id 1 Ta Ollie Use 投影 session CreateCriteria typeof Customer SetP
  • 实例作为静态类属性

    是否可以在 PHP 中将类的实例声明为属性 基本上我想要实现的是 abstract class ClassA static property new ClassB 好吧 我知道我不能这样做 但是除了总是做这样的事情之外还有什么解决方法吗 i