PHP,在类属性上调用静态方法

2023-12-31

我希望将对象存储为类的属性。然后我希望能够通过直接引用该属性来调用该类的静态方法。

考虑以下:

class myModel {
    public static function all()
    {
        return 1;
    }
}

class myClass {
    public $models;

    public function __construct()
    {
        $this->models->myModel = new myModel;
        $results = $this->models->myModel::all();
    }
}

$result = new myClass;

PHP 失败$results = $this->models->myModel::all();

如果我通过将类属性分配给局部变量来修改它,事情就会按预期工作:

$myModel = $this->models->myModel;
$results = $myModel::all();

我想消除将类属性分配给局部变量的需要。

这在 PHP 5.3.x(我正在使用的版本)或更高版本中可能吗?

解决方案应该是可读的,并且代码的用途不应该被混淆。

为了清楚起见,这是工作代码的极大简化。在我发布的示例代码中,将对象存储在类属性中的好处并不明显。


语法会给你的错误是:

解析错误:语法错误,意外的“::”(T_PAAMAYIM_NEKUDOTAYIM)


然而它可以在 PHP 7 中工作,这要归功于统一变量语法 RFC https://wiki.php.net/rfc/uniform_variable_syntax。所有以前的版本都需要中间变量。

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

PHP,在类属性上调用静态方法 的相关文章

随机推荐

  • Python Plotly:向具有多个子图的散点图添加水平线

    我有一个在 Plotly dash 上运行的散点图 这是代码 import dash import dash core components as dcc import dash html components as html import
  • Gridview 在 Windows Phone 8.1 中不水平滚动

    Gridview 在 Windows Phone 应用程序中不水平滚动 而是垂直滚动 我只是将 Windows 8 1 应用程序的代码复制粘贴到 Windows Phone 8 1 但它是垂直滚动的 这是xaml代码
  • 如何使用 SQLAlchemy for Scrapy 创建 pg_trgm 索引?

    我正在使用 Scrapy 从网络论坛中抓取数据 我使用 SQLAlchemy 将此数据存储在 PostgreSQL 数据库中 表和列创建得很好 但是 我无法让 SQLAlchemy 在其中一列上创建索引 我正在尝试使用 gin 创建一个三元
  • 负载测试软件[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将视频数据转换为NSURL

    我有一个从服务器获取并作为数据接收的视频 我试图将原始数据覆盖到 URL 中 以便我可以使用它来实例化 AVPlayerItem 并在手机上播放视频 但是 当我打印 videoDataString 时 此代码返回 nil 如果我打印 vid
  • 如何读取二进制数作为输入?

    有没有办法让用户在C或C 中输入二进制数 如果我们写类似的东西 int a 0b1010 std cout lt lt a lt lt std endl 然后输出结果为 10 当使用适当的编译器扩展时 但是当我们尝试写时 int n std
  • 序列化 swing/awt 组件

    我正在尝试序列化 JPanel 但每次都会收到此错误 java io WriteAbortedException writing aborted java io NotSerializableException javax swing Gr
  • 爬行亚马逊时出现问题,元素无法滚动到视图中

    我在亚马逊上抓取页面时遇到问题 我尝试过使用 执行JS脚本 动作链 显式等待 似乎什么都不起作用 一切都会引发一个异常或错误或另一个 基本脚本 ff create webdriver instance ff get https www am
  • 在网络浏览器中使用 JavaScript 读取文件流

    在网络浏览器中 我想计算本地文件系统中一个大文件的 sha1 校验和 而不将其发送到服务器 File API http www w3 org TR FileAPI支持从本地磁盘读取文件 但我猜它会读取整个文件并将其全部放入内存中 如果文件大
  • 使用已安装的 xCon 进行越狱检测

    我对检测 iOS 越狱有疑问 我使用了一些东西来检测它 它们工作正常 但是当我安装 xCon 时 我的应用程序不再检测越狱 我使用了以下技术 检查cydia是否存在 检查 Cydia 应用方案 检查沙箱外的写入情况 检查符号链接是否存在 检
  • SWIG:未定义类型映射

    我有一个 C 类 我正在尝试使用 SWIG 为 Python 包装该类 我在尝试包装以数组作为输入的函数之一时遇到问题 这是头文件 class dyndiff data t private double H 3 double GAMMA d
  • Hilt 在没有构造函数参数的情况下注入 ViewModel

    使用新的依赖注入库Hilt 如何注入一些类ViewModel没有构造函数参数和ViewModelFactory 是否可以 Like in Fragment 我们只使用 AndroidEntryPoint and Inject 如何在没有构造
  • 如何在 Batik SVG 库中使用自定义字体?

    我正在开发一个为衣服创建模板的 Java 程序 用户输入他们想要在衣服上看到的单词 系统会创建一个 PDF 模板 为了创建模板 我以编程方式创建了一个 SVG 文档 然后使用 Batik 将 SVG 转码为 PDF 格式 我的客户现在希望能
  • 加载大量数据(40 列,2000 行)时,WPF 网格滚动缓慢且断断续续

    简而言之 当加载大量纯数据时 我们无法从任何类型的 WPF 网格 项目控件获得合理的滚动性能 我们使用 DevExpress WPF 网格创建了一个静态独立原型并将其上传到此处 http jump fm QOTDL http jump fm
  • 数据库模式与数据库表空间?

    当我阅读时正在阅读我的数据库 Schema 是对象的容器 表空间 对象的逻辑存储单元 谁能解释一下它们之间的区别吗 模式是一个命名空间 一个逻辑上的东西 它用于组织names数据库对象 它与数据的存储方式无关 表空间是一个物理事物 它是数据
  • iPhone + 应用内购买测试

    我已经在现有应用程序之一中实现了应用程序内购买 我还创建了 SandBox 帐户来测试它 我已经运行了该应用程序并对其进行了测试 它运行完美 因为 我已经测试过了 通过购买该功能 就意味着我已经购买了该功能 现在 代码发生了变化 我想重新测
  • sqlalchemy 缓存一些查询

    我在一个实时网站上运行这个 当用户登录时 我查询他的个人资料以查看他有多少可用的 积分 积分是通过贝宝购买的 如果一个人购买积分并且付款成功 查询仍然显示 0 积分 即使我在 phpmyadmin 中运行相同的查询它会带来正确的结果 如果我
  • GZIP压缩级别对解压有影响吗

    据我了解 GZIP 是 LZ77 和 Huffman 编码的组合 可以配置 1 9 之间的级别 其中 1 表示最快的压缩 较少压缩 9 表示最慢的压缩方法 最佳压缩 我的问题是 级别的选择only影响压缩过程 或者根据用于压缩的级别 解压缩
  • 角度测试随机中断:“未捕获类型错误:您在预期流的位置提供了‘未定义’。”

    我们有一个中等大小的 Angular 应用程序 目前约有 700 个单元测试 几周前 完美的测试开始出现问题 更奇怪的是 运行测试两次可能会产生不同的结果 即不同的测试可能会失败 在控制台中 我们总是发现错误 未捕获的类型错误 您在需要流的
  • PHP,在类属性上调用静态方法

    我希望将对象存储为类的属性 然后我希望能够通过直接引用该属性来调用该类的静态方法 考虑以下 class myModel public static function all return 1 class myClass public mod