从数组或对象检索值的PHP

从数组或对象检索值的PHP,php,oop,Php,Oop,我相信我已经得到了面向对象的php。我希望能够从我的对象打印出“文件名”。我读到我不想要[storage:ArrayObject:private],但我不知道如何摆脱它,也不知道它为什么会存在 任何帮助都将不胜感激。谢谢 我的班级是: class ProductImage extends TemplateContext { public static function get_images($id) { $product_images = mysql_query("SELECT fi

我相信我已经得到了面向对象的php。我希望能够从我的对象打印出“文件名”。我读到我不想要[storage:ArrayObject:private],但我不知道如何摆脱它,也不知道它为什么会存在

任何帮助都将不胜感激。谢谢

我的班级是:

class ProductImage extends TemplateContext {

public static function get_images($id) {

    $product_images = mysql_query("SELECT filename from product_images WHERE related_product_id = '" . $id. "' AND priority = 0 ORDER BY related_product_id ASC") or die("Query failed: " . mysql_error());

    while ($product_image = mysql_fetch_array($product_images)) {
        $results[] = new self($product_image);
    }
    return $results;
}
}

我的看法是:

$id= '5';

print_r(ProductImage::get_images($id));
我的输出是:

Array
(
    [0] => ProductImage Object
        (
            [ctx] => Array
                (
                )

            [storage:ArrayObject:private] => Array
                (
                    [0] => product.png
                    [filename] => product.png
                )

        )

)

文件名存储在私有类属性中,您必须找到或编写一个public get()方法来检索它。如果您在那里执行
new self(…)
操作时,可以看到调用的
\u构造,那将是一件好事。它应该在您的
ProductImage
类或它的祖先之一中。另外,
ArrayObject
s非常类似于数组,您应该能够以任何方式将其用作数组(使用类似于
$images[0]->storage['filename'])
。啊……这两个注释加在一起都很有意义。添加了这两个东西,并使其工作。谢谢
mysql.*
函数不再维护,不应在任何新的代码库中使用。它正逐渐被淘汰,取而代之的是更新的API。相反,您应该与或一起使用。