访问PHP数组对象的受保护属性

5

我正在尝试在Symfony2中上传多个文件。我正在尝试访问以下请求对象,但我无法获得参数属性。如何逐个访问文件以上传它们。

我收到的错误消息:

致命错误:无法访问/var/www/File/src/Webmuch/FileBundle/Entity/File.php第66行中的Symfony\Component\HttpFoundation\FileBag::$parameters受保护的属性

请求对象:

Symfony\Component\HttpFoundation\FileBag Object
(
    [parameters:protected] => Array
        (
            [file] => Array
                (
                    [0] => Symfony\Component\HttpFoundation\File\UploadedFile Object
                        (
                            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
                            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => FLB1.jpg
                            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
                            [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 13584
                            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
                            [pathName:SplFileInfo:private] => /tmp/phpzdaQgW
                            [fileName:SplFileInfo:private] => phpzdaQgW
                        )

                    [1] => Symfony\Component\HttpFoundation\File\UploadedFile Object
                        (
                            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
                            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => FLB2.gif
                            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/gif
                            [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 5193
                            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
                            [pathName:SplFileInfo:private] => /tmp/phpNUXho7
                            [fileName:SplFileInfo:private] => phpNUXho7
                        )

                )

        )

)

请帮我弄清楚这个对象访问。如果有人知道在Symfony2中更好的上传文件方法,请告诉我。

2个回答

5

要访问文件,您需要执行以下操作:

// retrieves an instance of UploadedFile
$request->files->get('file');

但是如果没有Doctrine,我们如何访问私有属性? - Aysennoussi
Doctrine?我在我的回答中没有提到过Doctrine。您能否请尝试更清楚地表达您的问题? - Carlos Granados
是的!问题在于这些是受保护的属性,即使您使用$request->files->get('file');也并不意味着您可以访问这些属性,因为它们是受保护的,唯一的方法是在实体类中编写getter方法..这就是文档所说的。但如果您有其他意见,我很乐意听取。 - Aysennoussi

1
我认为你试图直接访问属性。你必须使用现有的getter和setter 1
这应该返回文件名:
// retrieves an instance of UploadedFile
$file = $request->files->get('file');
$file_name = $file->getClientOriginalName();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接