【问题标题】:Can't Access Object Variables In PHP无法在 PHP 中访问对象变量
【发布时间】:2013-04-29 09:35:02
【问题描述】:

由于某种原因,当我 print_r 包含一个对象的变量时,我得到了数据。但是,当我尝试使用 -> 表示法访问每个项目时,它说它是 NULL

这是$user_dataprint_r 转储:

STDCLASS OBJECT ( 
    [UACC_ID] => 6 
    [UACC_GROUP_FK] => 1 
    [UACC_EMAIL] => xxx@GMAIL.COM 
    [UACC_USERNAME] => xxxx 
    [UACC_PASSWORD] => $2A$08$CLSxxxxxxEOS7D2NDCSDD3P6A6 
    [UACC_IP_ADDRESS] => xx.xxx.xx.65 
    [UACC_SALT] => C64JYWY7ZS
    [UACC_ACTIVATION_TOKEN] => 
    [UACC_FORGOTTEN_PASSWORD_TOKEN] => 
    [UACC_FORGOTTEN_PASSWORD_EXPIRE] => 0000-00-00 00:00:00 
    [UACC_UPDATE_EMAIL_TOKEN] => 
    [UACC_UPDATE_EMAIL] => 
    [UACC_ACTIVE] => 1 
    [UACC_SUSPEND] => 0 
    [UACC_FAIL_LOGIN_ATTEMPTS] => 0 
    [UACC_FAIL_LOGIN_IP_ADDRESS] => 
    [UACC_DATE_FAIL_LOGIN_BAN] => 0000-00-00 00:00:00 
    [UACC_DATE_LAST_LOGIN] => 2013-05-05 07:18:34 
    [UACC_DATE_ADDED] => 2013-04-28 09:34:39 
    [UGRP_ID] => 1 
    [UGRP_NAME] => PUBLIC 
    [UGRP_DESC] => PUBLIC USER : HAS NO ADMIN ACCESS RIGHTS. 
    [UGRP_ADMIN] => 0 
    [UPRO_ID] => 6 
    [UPRO_UACC_FK] => 6 
    [UPRO_COMPANY] => 
    [UPRO_FIRST_NAME] => xxxx 
    [UPRO_LAST_NAME] => xxxxx 
    [UPRO_PHONE] => 01392 
    [UPRO_NEWSLETTER] => 0 
    [UADD_ID] => 
    [UADD_UACC_FK] => 
    [UADD_ALIAS] => 
    [UADD_RECIPIENT] => 
    [UADD_PHONE] => 
    [UADD_COMPANY] => 
    [UADD_ADDRESS_01] => 
    [UADD_ADDRESS_02] => 
    [UADD_CITY] => 
    [UADD_COUNTY] => 
    [UADD_POST_CODE] => 
    [UADD_COUNTRY] => 
)

但是,当我尝试这个时,我得到NULL

var_dump($user_data->UACC_ID);

我似乎无法通过使用符号 $user_data->UACC_EMAIL 等来回显任何内容。我做错了什么?

谢谢大家。看起来输出正在被转换为 CSS 中的 ALLCAPS,所以我没有意识到该库实际上使用了小写变体。

谢谢。


【问题讨论】:

  • 如果没有 UACC_ID 这样的键,你会在尝试访问 $user_data->UACC_ID 时遇到错误——这意味着某些东西可能会覆盖该值——你能发布完整的代码吗?
  • 我唯一的代码如下,我不明白为什么它不起作用: $user_data = $this->flexi_auth->get_user_by_id()->row(); print_r($user_data); //var_dump($user_data); var_dump($user_data->UACC_ID);
  • print_rvar_dump 都不会将输出转为全大写,请发布实际输出而不进行修饰。编辑:since you're using Flexi Auth, the column is named uacc_id, not UACC_ID.
  • DCoder 完全正确 - 你 确定 它不是 $user_data->uacc_id$user_data->uacc_ID 等,你要么有一个 CSS 转换,要么把它全部变成大写使用输出缓冲区和strtoupper?

标签: php object stdclass


【解决方案1】:

一种可能性,无论多么奇怪,是该对象定义了一个 __get 函数来捕获内部私有数据点并返回 null,以防止 php 在您尝试直接访问任何数据时抛出致命的“无法访问私有”错误。

所以,是的,UACC_ID 存在,并且在其中,但正在被拦截。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2015-07-09
    • 2016-12-27
    • 2023-03-15
    • 2019-10-18
    相关资源
    最近更新 更多