get_class_vars() 未显示变量,但在同一类上运行的 property_exists() 返回 true

2023-12-28

我正在学习 PHP,并且已经开始使用类——下面可能是最基本的对象,哈哈。

<?php

    class Person {

        var $first_name;
        var $last_name;

        var $arm_count = 2;
        var $leg_count = 2;

        function say_hello() {
            echo "Hello from inside the class " . get_class($this) .".<br />";
        }
        function full_name() {
            return $this->first_name . " " . $this->last_name;
        }
    }

    $person = new Person();

    echo $person->arm_count . "<br />";

    $person->first_name = 'Lucy';
    $person->last_name = 'Ricardo';

    echo $person->full_name() . "<br />";

    $vars = get_class_vars('Person');
    foreach($vars as $var => $value) {
        echo "{$var}: {$value}<br />";
    }

    echo property_exists("person","first_name") ? 'true' : 'false';

?>

然后运行上面的代码,应该会输出一些数据。在课程中(视频培训系列由凯文·斯科格伦德 http://twitter.com/#!/kskoglund, "PHP:超越基础 http://www.lynda.com/home/displaycourse.aspx?lpk2=653",) Kevin 的屏幕看起来正确(他使用的是 5.2.6。)

我的 WAMP 安装版本为 5.3,并且 Person 类的“first_name”属性没有被循环吐出...但是echo property_exists("person","first_name") ? 'true' : 'false';返回真。

谁能帮助我理解出了什么问题?


property_exists如果属性存在,则返回 true,无论属性和调用者的范围是什么。

get_class_vars将返回当前范围内可访问的所有属性,以及它们的静态值或默认值(对于未声明静态的属性)。但是,它不会返回类主体中未声明的属性,也不会接受对象参数。

注意property_exists如果使用类名查询未在类主体(即:对象上下文)中声明的属性,也会返回 false。

每个例子:

class Foo {
    public $foo;
    private $bar;

    public function test() {
        var_dump(get_class_vars(__CLASS__));
    }
}

$obj = new Foo;
$obj->baz = 'hello';
property_exists($obj, 'bar');            // true
property_exists($obj, 'baz');            // true
property_exists(get_class($obj), 'baz'); // false

get_class_vars(get_class($obj));         // you get "foo" only
$obj->test();                            // you get "foo" and "bar", not "baz"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

get_class_vars() 未显示变量,但在同一类上运行的 property_exists() 返回 true 的相关文章

  • 如何使用 mysqli 设置排序规则?

    我的数据库使用 utf8 czech ci 排序规则 我也想将其设置为我的数据库连接 如果我不想要默认的 utf8 general ci Mysqli set charset 不会让我设置排序规则 Here https bugs php n
  • 无法加载动态库“php_wincache.dll”?

    因为我已经使用 ASP NET 所以我决定在 IIS 上使用 PHP 我使用 Wep PI 安装它 但是当我尝试安装 Composer 时 他失败并出现 PHP 设置错误 我尝试将 php ini 中的 extension dir 更改为绝
  • 在 PHP 中你使用复数还是单数来命名你的数组? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当我命名数组类型变量时 我经常遇到一个困境 我使用复数还是单数命名我的数组 例如 假设我有一个名称数组 在 PHP 中我会说 names arr
  • 改变了 (un)serialize() 的行为?

    编辑 问题是现在已记录的 php 错误 https bugs php net bug php id 71617 https bugs php net bug php id 71617感谢您找到那个 Danack 我刚刚将应用程序从 PHPH
  • 为什么php邮件功能在xampp中不起作用

    我在使用 xampp 时遇到问题 我想检查邮件表格 但看不到任何结果 我像本网站中的教程一样配置 Mercury 32 http system66 blogspot com 2010 01 how to send mail from loc
  • 无限滚动启用(wordpress)

    因此 我发现本教程可以启用无限滚动 http wptheming com 2012 03 infinite scroll to wordpress theme http wptheming com 2012 03 infinite scro
  • 使用 laravel 拒绝 .composer/config 文件权限

    我在 ubuntu virtualbox 上有一个 laravel 项目 我曾经跑步composer update一切都很好 我不知道有什么变化可能会影响这一点 但现在当我跑步时composer update I get file get
  • WordPress、PHP、URL 编码问题

    Wordpress 提供了一个名为 the permalink 的函数 您猜对了 在帖子循环中返回给定帖子的永久链接 我正在尝试对该永久链接进行 URL 编码 当我执行此代码时 它以 HTML 形式生成以下结果 http
  • Google OAuth 2 PHP 调用用户信息

    我正在尝试使用 Google 的 OAuth2 API 在他们的通用文档中 他们提到了一个名为 UserInfo 的调用 http code google com apis accounts docs OAuth2Login html us
  • 检查 Laravel 模型是否已保存或查询是否已执行

    我见过很多人使用这种方式来检查 Laravel 模型是否已保存 所以现在我想知道这是否是一种安全的方法 我还可以检查下面的查询是否像这样执行 检查模型是否已保存 Eg myModel new User myModel gt firstnam
  • 防止我的 PHP 网络爬虫停止运行

    我正在使用 PHPCrawl 类并添加了一些 DOMDocument 和 DOMXpath 代码来从网页中获取特定数据 但是脚本在接近爬行整个网站之前就停止了 我已将 set time limit 设置为 100000000 因此这不应该成
  • Monolog - 仅记录特定级别的错误

    我在普通 PHP 应用程序中使用 Monolog 我只想记录特定级别的错误 INFO 和不高于 因为我还有其他处理程序 这是我的代码
  • 如何在 Linux 上的 php 中启用 --enable-soap?

    这就是问题所在 我在 Apache 上安装了 PHP 5 2 9 但无法升级 PHP 有没有办法在 PHP 5 2 9 中启用 SOAP PHP 手册中说 要启用 SOAP 支持 请使用 enable soap 配置 PHP 这根本没有帮助
  • 更改二维数组每一行中的键而不丢失值

    我有一个行数组 其中一个 视觉 数据列有两个相似但不同的键 我想替换其中一个键 以便该列在所有行中具有相同的键 我的输入数组 Ttitle gt lilly Price gt 1 75 Number gt 3 Title gt rose P
  • simplexml_load_string 函数出现巨大的输入查找错误

    我有一个大小不同的 API 响应 当我尝试使用将 xml 对象转换为 std 对象时 它不会在大型 xml 数据 约 20MB 上显示错误 这是我的代码 xml simplexml load string apiResponse objec
  • 将数组值翻转为数组键的函数? [复制]

    这个问题在这里已经有答案了 有没有一个php函数可以接受下面的数组 array size 4 1 gt string 0 6 gt string 1 7 gt string 1 8 gt string 7 将其翻转到下面的数组 请注意 数组
  • PHP:注意:定义会话变量的索引未定义

    我正在制作一个带有电子邮件验证器的注册系统 您典型的 使用此代码来验证 类型的事情 我希望存储一个会话变量 以便当人们在注册页面上完成帐户注册并意外导航回该页面时 它会提醒他们需要在使用前激活帐户 使这个问题如此难以诊断的原因是我以类似的方
  • 如何使用 Amazon S3 SDK 更新元数据

    我正在使用 Amazon 的 AWS SDK 的 PHP 版本 我有一堆带有Expires标头 我想删除该标头并添加一个Cache control标题代替 这更新对象 http docs amazonwebservices com AWSS
  • 在 PHP 中,如何检查函数是否存在?

    如何检查该功能是否可用my functionPHP 中已经存在 Using function exists http php net function exists if function exists my function my fun
  • Python父类访问子私有变量

    以下代码会生成错误 class A object def say something self print self foo print self bar class B A def init self self foo hello sel

随机推荐

  • 使用 SimpleXML 的 XML 声明标签

    我开始使用带有注释的简单 XML 框架 link http simple sourceforge net download stream doc tutorial tutorial php namesoace 对于 Java 但我不明白如何
  • matplotlib 图例位置编号

    我开始使用 Python 进行科学计算 而且我真的很喜欢它 但是我对 matplotlib pylab legend 函数的一个功能感到困惑 特别是 位置功能允许人们使用数字指定图例的位置 遵循以下方案 最好 0 右上角 1 左上 2 左下
  • 如何将对象字符串解析为javascript对象? [复制]

    这个问题在这里已经有答案了 我从数据库得到这个字符串 from 15 00 to 16 00 from 16 00 to 17 00 from 17 00 to 18 00 from 18 00 to 19 00 它是一个字符串 在这种情况
  • 在多个显示器上居中用户表单

    我在网上搜索了一段时间 确实找到了一些解决方案 但似乎没有一个对我有帮助 我在 Excel 2010 中有一个用户窗体 我想将其置于 Excel 窗口的中心 我有双显示器 它似乎总是在两个显示器之间居中 我知道您可以编辑一些属性 例如 St
  • Objective-C 中如何改变鼠标光标

    我正在制作一个图像编辑应用程序 但如果没有像 Photoshop 中的画笔那样的光标 它看起来非常不完整 如何设置图标 并在退出应用程序时将其更改回来 这是我的头文件中的代码 以防万一需要 interface test NSWindow
  • PHP:涉及爆炸键的映射数组[重复]

    这个问题在这里已经有答案了 在尝试使用多个 foreach 循环解决此问题后 我仍然不知道如何映射 arr to arr mapped 我需要爆炸钥匙 arr获取最多具有三个要创建的新键的元素 arr mapped
  • 通过两个模型来查看[重复]

    这个问题在这里已经有答案了 我是 mvc 新手 并尝试通过用它做一个小项目来学习它 我有一个页面应该显示特定日期的货币和天气 所以我应该通过货币模型和天气模型 我已经完成了通过货币模型并且工作正常 但我不知道如何通过第二个模型 大多数教程都
  • 为什么 python MSAL 身份验证卡在 ConfidentialClientApplication 处?

    我有这段 python 代码 它在我的计算机上完美运行 但当我在带有 Amazon Linux 的 EC2 上运行它时 它会卡在这个函数中 检查了所有网络和防火墙规则 一切正常 事实上 如果我从我的 PC 获取令牌并尝试通过 cURL 直接
  • 如何使用 prometheus Alertmanager 在工作时间之外抑制警报?

    我们的应用程序依赖于仅在工作时间内活跃的数据源 我们在普罗米修斯中设置了警报 以便在溪流干涸时通知我们 但是 我们不希望在工作时间之外收到 错误 警报 我跟着这个帖子 https medium com tom fawcett time of
  • 如何限制日志记录频率?

    任何日志库是否包含限制日志消息频率的方法 我的意思是假设我有一个等待循环并且它记录 没有完成 如何使下一条 未完成 消息仅在 1 秒后记录 我知道我可以自己编程 大多数日志记录库都支持过滤器来限制日志记录频率 请参阅此答案SLF4J 或 L
  • 如何使用 highcharts 将图表图像保存到服务器上?

    With highcharts you have a built in button to download the current chart example http www highcharts com demo http www h
  • 我可以更新 ProgressDialog 的字符串消息吗?

    我在 Android AsyncTak 中设置了一个进度对话框并且它可以工作 我的问题是可以在 AsyncTask 的 onProgressUpdate 方法中更新 ProgressDialog 显示的字符串 我想使用publishProg
  • wkhtmltopdf 自定义字体字母间距

    I m running wkhtmltopdf on linux server centos 10 x86 64 I m trying to add Times New Roman font to the page I see the fo
  • Vim 颜色太亮(终端)

    我的 Vim 和 iTerm2 有问题 颜色太亮 对于所有主题 它适用于 Terminal app 和 MacVim 所以我想这一定是我完全错过了 iTerm2 中的某些设置 The picture below shows you the
  • Dropzone 无法以编程方式在 div 内工作

    我遇到了 dropzone 问题 我试图将其包含在 div 中 但不起作用 起初我的js上没有 div dropzone 东西 并且没有出现错误 但是上传部分无法正常工作 这是因为我从未表明 dropzone 类位于 div 内 当我添加时
  • Elastic Search 地理空间搜索实现

    我试图了解 elasticsearch 如何在内部支持地理空间搜索 对于基本搜索 它使用倒排索引 但它如何与附加搜索条件 例如搜索特定半径内的特定文本 结合起来 我想了解如何存储和查询索引以支持这些查询的内部结构 文本查询和地理查询是分开执
  • gradle构建过程中的CSS Sprite生成?

    我最近读了一篇关于 Javascript 的文章 其中提到了像 Grunt 和 Ender 这样的构建工具 简要指出 此类工具能够从单独提供的文件生成精灵图像 并且这些构建工具可以集成到构建过程中 不幸的是我的谷歌搜索没有透露更多这方面的信
  • 无法在控制台应用程序 .NET Core 中使用 IOptions

    我有一个控制台应用程序 我正在其中构建配置 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build var se
  • 找不到socket.io.js [重复]

    这个问题在这里已经有答案了 可能的重复 找不到socket io js https stackoverflow com questions 10191048 socket io js not found 我正在使用最新版本的 Socket
  • get_class_vars() 未显示变量,但在同一类上运行的 property_exists() 返回 true

    我正在学习 PHP 并且已经开始使用类 下面可能是最基本的对象 哈哈