从 PHP 中具有动态类名的类获取静态属性

2024-04-19

我有这个:

  • 一个保存类名的字符串变量($classname)
  • 一个字符串变量包含属性名称 ($propertyname)

我想从该类获取该属性,问题是,该属性是静态的,我不知道该怎么做。

如果该属性不是静态的,则它将是:

$classname->$propertyname;

如果该属性是一个方法,我可以使用 call_user_function

call_user_func(array($classname, $propertyname));

但就我而言,我只是迷路了。然而我希望这是可能的。 PHP 拥有数以千计的函数,他最好也有一些相关的东西。也许我错过了什么?

Thanks!

Edit:

  • 对于那些有eval() http://php.net/manual/en/function.eval.php解决方案:谢谢,但这是不可能的
  • 对于那些有获取_class_vars() http://php.net/manual/en/function.get-class-vars.php解决方案:谢谢,但似乎又回来了“给定类的默认属性”(php.net),是的,我希望该值是可以更改的(尽管它在某些情况下确实对我有帮助)

如果您使用 PHP 5.3.0 或更高版本,则可以使用以下命令:

$classname::$$propertyname;

不幸的是,如果您使用的版本低于 5.3.0,您将无法使用eval() http://php.net/eval (get_class_vars() http://php.net/get-class-vars如果该值是动态的,则不起作用)。

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

从 PHP 中具有动态类名的类获取静态属性 的相关文章

随机推荐

  • Q_PROPERTY NOTIFY 信号及其参数

    我有写 propertyChanged 的习惯signals 带参数 这样接收端就不需要调用Q PROPERTY s READ明确地发挥作用 我这样做是出于清晰的考虑 并且假设在 QML 数据绑定情况下 不需要对 getter 进行 昂贵
  • 如何在 TypeScript 中创建本地模块

    我已经在文件夹中创建了src modules my module 其中有package json并定义了导出我们需要的所有内容的主文件 我现在可以从中导入import A from modules my module 我想将语法更改为imp
  • 如何通过sql查询在数据库中只保存时间而不保存日期

    此查询正在保存完整的日期和时间 但我只想在数据库中保存时间而不是日期 有什么查询可以做到这一点吗 update table set current time now 您的列必须设置为 DATETIME 或 TIMESTAMP 如果您使用 T
  • 使用 Google Apps 脚本抓取动态网页

    我想使用其他网站读取项目的一些数据谷歌脚本 https script google com 有问题的页面是Dyanmic 它们包含在初始页面加载后通过 JavaScript 调用服务器加载的内容 通常 对于一些静态内容 这工作得很好 但我对
  • 无法将 CSS 应用于 html 字符串

    我正在尝试将 evoPDF 集成到我的 asp net 应用程序上 我通过 ajax 从我的 html 文件 onclick 发送部分 html 直到这一部分一切正常 现在 当我从 EvoPdf API 调用这些方法时 1 GetPdfBy
  • 如何计算连续行的时间差

    原始数据如下所示 我想按访问者和时间对其进行排序 以计算行中的时间差 然后将其保存到新文件中 visitor v time payment items 1 Jack 1 2 2018 16 07 35 3 2 Jack 1 2 2018 1
  • 在 C++ 中使用 realloc

    std realloc如果 malloc 的内存包含非 Pod 类型 则在 C 中是危险的 看来only问题是std realloc如果无法在原位增加内存 则不会调用类型析构函数 一个简单的解决方法是try realloc功能 如果新内存无
  • 如何在java中获取大尺寸数组

    我是java新手 我想在java中获取大输入大小的数组 但给了我一些运行时错误 NZEC 我不知道它 我也对此错误做了一些研究 但没有找到与我的问题相关的任何内容 long n sc nextLong n can be upto 10 9
  • YouTube API 身份验证 - Iphone

    我正在尝试使用 youtube api 的示例代码上传视频 当我按下上传按钮时 进度条完成其过程 但是一旦到达终点我就会收到错误 错误描述如下 YouTubeTest 2149 f803 错误 错误 Domain com google GD
  • 防止 TestNg 在并行测试之间共享数据

    Goal 并行独立运行 2 个类 其中每个测试将方法名称存储到稍后可以在测试中访问的变量中 Issue 当测试并行运行时 它们开始在彼此之间共享数据 从而破坏测试 如果您看到控制台输出 则这是错误的 INFO Name of Test fr
  • 我可以在 Javascript 中定义自定义运算符重载吗? [复制]

    这个问题在这里已经有答案了 是否可以在 JavaScript 中的类型实例之间定义自定义运算符 例如 假设我有一个自定义向量类 是否可以使用 vect1 vect2 检查是否相等 而底层代码会是这样的 operator a b return
  • 使用控件模板创建图像+文本按钮?

    我厌倦了一遍又一遍地创建相同的图像 文本按钮 我想将标记移动到控件模板 这是我的问题 我需要提供模板绑定以将图像和文本添加到模板化按钮 而 Button 控件似乎没有我可以绑定的属性 到目前为止 我的模板看起来像这样 带有 表示未知模板绑定
  • 如何在特定项目中禁用“初始化 JS/TS 语言功能”?

    我有一个 Laravel 项目在 Visual Studio Code 中开发它 另外 我在一个单独的项目中也有使用 Angular 8 的前端 该项目也使用 VSC 我构建 Angular 项目并将构建版本推送到 Laravel 项目中
  • eclipse项目未导入本地Maven仓库中的jar包

    我在设置 Eclipse 项目时遇到问题 问题是每当我创建一个新项目并导入代码时 Eclipse 不会解析 C user m2 repository 中存在的 jar 文件中存在的包 因此 它会给出很多编译错误 直到我通过 添加外部 Jar
  • 任务“:app:transformClassesWithDexForDebug”执行失败

    我正在尝试执行代码 但我在消息中收到错误消息梯度构建 that Execution failed for task app transformClassesWithDexForDebug Error Execution failed for
  • Jupyter + EMR + Spark - 从本地计算机上的 Jupyter 笔记本连接到 EMR 集群

    我是 PySpark 和 EMR 的新手 我尝试通过 Jupyter Notebook 访问 EMR 集群上运行的 Spark 但遇到错误 我使用以下代码生成 SparkSession spark SparkSession builder
  • 从文件读取时在 clojure 中分割行

    我正在学校学习 clojure 马上就要考试了 我只是在做一些事情以确保我掌握了窍门 我试图从文件中逐行读取 正如我所做的那样 只要有 我就想分割该行 到目前为止 这是我的代码 defn readFile map fn line cloju
  • 属于 cakephp 和 html select 中的问题,我不明白该怎么做

    cakephp菜鸟提出的简单问题 我有两个模型 玩家和团队 Team 有一个id int 和一个cool name varchar 玩家有一个 id int 一个 Cool name varchar 和一个团队表引用 team id int
  • 如果购物车商品来自某些特定产品类别,请删除结帐字段

    我使用 WooCommerce Checkout Manager 在账单部分添加自定义字段 但仅当我有指定类别的某些产品时才需要显示此字段 这些字段是必需的 我写了这段代码 add filter woocommerce checkout f
  • 从 PHP 中具有动态类名的类获取静态属性

    我有这个 一个保存类名的字符串变量 classname 一个字符串变量包含属性名称 propertyname 我想从该类获取该属性 问题是 该属性是静态的 我不知道该怎么做 如果该属性不是静态的 则它将是 classname gt prop