Objects是Object Storage服务的基本组件。Object可以一个图片、视频、文件或者任何一个需要占用存储空间的东西。
不幸的是,object这个词在计算机编程中有特定的含义,这可能与其他有object含义的单词混淆。因此php-opencloud所说的object是指存储在object storage中的DataObject。这仅仅是为了避免混淆——例如,PHP的内建函数is_object()就是检查它是否是PHP对象,如果它是存储在ObjectStorage中。
因此,对象存储服务的完整集成结构是:
* `OpenStack` (or `Rackspace`) 是ObjectStorage的父类
* `ObjectStore` 服务事例,是Container的父类
* `Container`, 是DataObject的父类
* `DataObject`, 包含实际对象数据
DataObject类和它包含的方法
调用Container对象的工厂方法创建一个空的DataObject
$cloud= new OpenStack(...);
$ostore= $cloud->ObjectStore(...);
$container= $ostore->Container('MyContainer');
$obj= $container->DataObject();
属性
DataObject中定义的标准属性:
* `name` - 对象名
* `hash` - 对象的MD5校验码
* `bytes` - 对象长度(字节)
* `last_modified` - 对象上次更改的日期
* `content_type` - 内容类型
* `content_length` - 内容长度(字节)
方法:
如下定义的是可用的方法:
* `Url()` - 对象在存储系统中的URL
* `Create()` - 在对象存储系统中创建一个对象
* `Update()` -更新已存在的对象
* `Delete()` - 删除对象
* `SetData()` - 直接设置对象的内容(很少使用)
* `SaveToString()` -以string类型返回对象(很少使用)
* `SaveToFilename()` - 将对象保存到本地文件中
大对象
对象存储服务中存储比服务器内存大的多的对象是很平常的事情。例如,服务器只有几个G的内存,而一个要存储的视频文件就可能有100G大。因此,对象的数据通常从本地文件系统上读取或者写入。当然,并非总是如此,因此也提供了一些其他的方法,但是他们在上面的方法中被标记了(很少使用)。
翻译自:https://github.com/rackspace/php-opencloud/blob/master/docs/userguide/objects.md