0

下面我有在 CMSMS 中的事件期间传递的对象参数的 print_r 输出。我是 php 和 CMSMS 的新手。我特别需要 id 为 11(persontasked)的对象的值,但我不知道从哪里开始。看起来它是一个带有一些参数的对象,其中一个是一个对象(fielddefs),它包含数组,而我需要的值也在一个对象中。有没有一些简单的方法来浏览这个结构?它将始终位于同一个地方。

这是包含我需要的值的块(乔恩史密斯):

[storage:ArrayObject:private] => Array
(
    [0] => Jon Smith
)

位于该物体深处:

ListIt2Item 对象
(
    [item_id] => 55
    [别名] => 测试电子邮件
    [title] => 测试邮件
    [位置] => 7
    [活跃] => 1
    [创建时间] => 2014-12-30 14:48:03
    [修改时间] => 2014-12-30 19:56:46
    [开始时间] =>
    [结束时间] =>
    [所有者] => 5
    [key1] =>
    [key2] =>
    [key3] =>
    [fielddefs] => ListIt2FielddefArray 对象
        (
            [_parent_item:ListIt2FielddefArray:private] => ListIt2Item 对象
 *递归*
            [存储:ArrayObject:私有] => 数组
                (
                    [6] => listit2fd_SelectDateTime 对象
                        (
                            [id:ListIt2FielddefBase:private] => 6
                            [name:ListIt2FielddefBase:private] => 日期
                            [别名:ListIt2FielddefBase:private] => Time_Opened
                            [描述:ListIt2FielddefBase:私有] =>
                            [type:ListIt2FielddefBase:private] => SelectDateTime
                            [friendlytype:ListIt2FielddefBase:private] => 选择日期时间
                            [value:ListIt2FielddefBase:private] => ListIt2FielddefValue 对象
                                (
                                    [存储:ArrayObject:私有] => 数组
                                        (
                                            [0] => 2014 年 12 月 30 日
                                        )

                                )

                            [起源:ListIt2FielddefBase:private] => ListIt2
                            [活动:ListIt2FielddefBase:私有] => 1
                            [禁用:ListIt2FielddefBase:私有] =>
                            [路径:ListIt2FielddefBase:private] => /home/public_html/modules/ListIt2/lib/fielddefs/SelectDateTime
                            [位置:ListIt2FielddefBase:私有] => 0
                            [必需:ListIt2FielddefBase:私有] => 1
                            [选项:ListIt2FielddefBase:private] => 数组
                                (
                                    [日期格式] => mm-dd-yy
                                    [格式类型] => 1
                                    [show_seconds] => 0
                                    [大小] => 20
                                    [时间格式] => HH:mm
                                )

                            [调用者:ListIt2FielddefBase:私人] =>
                            [item_id:ListIt2FielddefBase:private] => 55
                            [parent_array:ListIt2FielddefBase:private] => ListIt2FielddefArray 对象
 *递归*
                            [event_handler:protected] => ListIt2EventHandlerBase 对象
                                (
                                    [_field:ListIt2EventHandlerBase:private] => listit2fd_SelectDateTime 对象
 *递归*
                                )

                        )

                    [10] => listit2fd_Dropdown 对象
                        (
                            [id:ListIt2FielddefBase:private] => 10
                            [name:ListIt2FielddefBase:private] => 类别
                            [别名:ListIt2FielddefBase:private] => 票证类别
                            [描述:ListIt2FielddefBase:私有] =>
                            [类型:ListIt2FielddefBase:private] => 下拉
                            [friendlytype:ListIt2FielddefBase:private] => 下拉
                            [value:ListIt2FielddefBase:private] => ListIt2FielddefValue 对象
                                (
                                    [存储:ArrayObject:私有] => 数组
                                        (
                                            [0] => 软件问题
                                        )

                                )

                            [起源:ListIt2FielddefBase:private] => ListIt2
                            [活动:ListIt2FielddefBase:私有] => 1
                            [禁用:ListIt2FielddefBase:私有] =>
                            [路径:ListIt2FielddefBase:private] => /home/public_html/modules/ListIt2/lib/fielddefs/Dropdown
                            [位置:ListIt2FielddefBase:私有] => 3
                            [必需:ListIt2FielddefBase:私有] => 1
                            [选项:ListIt2FielddefBase:private] => 数组
                                (
                                    [选项] => 软件问题 硬件问题 请求新软件 请求新硬件 其他
                                )

                            [调用者:ListIt2FielddefBase:私人] =>
                            [item_id:ListIt2FielddefBase:private] => 55
                            [parent_array:ListIt2FielddefBase:private] => ListIt2FielddefArray 对象
 *递归*
                            [event_handler:protected] => ListIt2EventHandlerBase 对象
                                (
                                    [_field:ListIt2EventHandlerBase:private] => listit2fd_Dropdown 对象
 *递归*
                                )

                        )

                    [11] => listit2fd_Dropdown 对象
                        (
                            [id:ListIt2FielddefBase:private] => 11
                            [name:ListIt2FielddefBase:private] => 分配给
                            [别名:ListIt2FielddefBase:private] => persontasked
                            [描述:ListIt2FielddefBase:私有] =>
                            [类型:ListIt2FielddefBase:private] => 下拉
                            [friendlytype:ListIt2FielddefBase:private] => 下拉
                            [value:ListIt2FielddefBase:private] => ListIt2FielddefValue 对象
                                (
                                    [存储:ArrayObject:私有] => 数组
                                        (
                                            [0] => 乔恩·史密斯
                                        )

                                )

                            [起源:ListIt2FielddefBase:private] => ListIt2
                            [活动:ListIt2FielddefBase:私有] => 1
                            [禁用:ListIt2FielddefBase:私有] =>
                            [路径:ListIt2FielddefBase:private] => /home/public_html/modules/ListIt2/lib/fielddefs/Dropdown
                            [位置:ListIt2FielddefBase:私有] => 4
                            [必需:ListIt2FielddefBase:私有] => 1
                            [选项:ListIt2FielddefBase:private] => 数组
                                (
                                    [选项] => 乔恩·史密斯琼·史密斯
                                )

                            [调用者:ListIt2FielddefBase:私人] =>
                            [item_id:ListIt2FielddefBase:private] => 55
                            [parent_array:ListIt2FielddefBase:private] => ListIt2FielddefArray 对象
 *递归*
                            [event_handler:protected] => ListIt2EventHandlerBase 对象
                                (
                                    [_field:ListIt2EventHandlerBase:private] => listit2fd_Dropdown 对象
 *递归*
                                )

                        )

                )

        )

)
4

3 回答 3

1

我想 print_r 让它看起来比实际复杂得多。我能够通过以下方式获得价值:

$itemobject = $params['item_object'];
$itemobjectArray = (array)$itemobject;
$fielddefsArray=$itemobjectArray['fielddefs'];
$output = $fielddefsArray[11];`enter code here`
于 2014-12-31T01:55:12.833 回答
1

The problem you're going to run into is that the storage property is private and therfore cannot be accessed from outside of the instance of the ListIt2FielddefArray Object.

You will need a getter method to access that value.

It should look something like:

<?php

$myobject->get('myval');
//or
$myobject->getStorage();

?>

Basically there has to be something publicly accessible that will allow you to access those values.

If you post up the actual code for those classes it will give us a better idea of what your options are.

于 2014-12-31T01:50:21.633 回答
0

即使作为一个完整的对象打印。

它已实现,因此您可以使用别名直接访问字段:

echo $item->persontasked;  //this should print "Jon Smith"

public function __get($key)
{
    if(isset($this->fielddefs[$key])) 
        return $this->fielddefs[$key]->GetValue();
}
于 2015-04-22T22:52:15.743 回答