Skip to content

Refactoring and fixes for PHP 7.2 #188

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ matrix:
include:
- php: 7.0
- php: 7.1
- php: 7.2
- php: nightly
allow_failures:
- php: nightly
Expand All @@ -25,7 +26,7 @@ before_install:
before_script:
- composer install --prefer-source
- vendor/bin/parallel-lint --exclude vendor .
- vendor/bin/php-cs-fixer fix --dry-run --diff --level psr2 .
- vendor/bin/php-cs-fixer fix --dry-run --diff .
- phpenv config-add ./xdebug.ini

after_script:
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ OpenStack services, and versions of services, are supported.
* [Contributing guide](/CONTRIBUTING.md)
* [Code of Conduct](/CODE_OF_CONDUCT.md)

## Backward incompatibility

Due to new [object typehint](https://wiki.php.net/rfc/object-typehint) since PHP 7.2, class `\OpenStack\ObjectStore\v1\Models\Object` had to be renamed to `\OpenStack\ObjectStore\v1\Models\ObjectEntity` in [v3.0.0](/releases/v3.0.0)!

## Getting help

- Meet us on Slack: https://phpopencloud.slack.com ([Get your invitation](https://slackpass.io/phpopencloud))
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@
"psr/log": "~1.0",
"satooshi/php-coveralls": "~1.0",
"jakub-onderka/php-parallel-lint": "0.*",
"friendsofphp/php-cs-fixer": "^1.0"
"friendsofphp/php-cs-fixer": "^2.0"
}
}
12 changes: 6 additions & 6 deletions doc/services/object-store/v1/objects.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Download an object
------------------

.. sample:: object_store/v1/objects/download.php
.. refdoc:: OpenStack/ObjectStore/v1/Models/Object.html#method_download
.. refdoc:: OpenStack/ObjectStore/v1/Models/ObjectEntity.html#method_download

As you will notice, a Stream_ object is returned by this call. For more information about dealing with streams, please
consult `Guzzle's docs`_.
Expand Down Expand Up @@ -88,19 +88,19 @@ Copy object
-----------

.. sample:: object_store/v1/objects/copy.php
.. refdoc:: OpenStack/ObjectStore/v1/Models/Object.html#method_copy
.. refdoc:: OpenStack/ObjectStore/v1/Models/ObjectEntity.html#method_copy

Delete object
-------------

.. sample:: object_store/v1/objects/delete.php
.. refdoc:: OpenStack/ObjectStore/v1/Models/Object.html#method_delete
.. refdoc:: OpenStack/ObjectStore/v1/Models/ObjectEntity.html#method_delete

Get metadata
------------

.. sample:: object_store/v1/objects/get_metadata.php
.. refdoc:: OpenStack/ObjectStore/v1/Models/Object.html#method_getMetadata
.. refdoc:: OpenStack/ObjectStore/v1/Models/ObjectEntity.html#method_getMetadata

The returned value will be a standard associative array, or hash, containing arbitrary key/value pairs. These will
correspond to the values set either when the object was created, or when a previous ``mergeMetadata`` or
Expand All @@ -110,7 +110,7 @@ Replace all metadata with new values
------------------------------------

.. sample:: object_store/v1/objects/reset_metadata.php
.. refdoc:: OpenStack/ObjectStore/v1/Models/Object.html#method_resetMetadata
.. refdoc:: OpenStack/ObjectStore/v1/Models/ObjectEntity.html#method_resetMetadata

In order to replace all existing metadata with a set of new values, you can use this operation. Any existing metadata
items which not specified in the new set will be removed. For example, say an account has the following metadata
Expand Down Expand Up @@ -140,7 +140,7 @@ Merge new metadata values with existing
---------------------------------------

.. sample:: object_store/v1/objects/merge_metadata.php
.. refdoc:: OpenStack/ObjectStore/v1/Models/Object.html#method_mergeMetadata
.. refdoc:: OpenStack/ObjectStore/v1/Models/ObjectEntity.html#method_mergeMetadata

In order to merge a set of new metadata values with the existing metadata set, you can use this operation. Any existing
metadata items which are not specified in the new set will be preserved. For example, say an account has the following
Expand Down
3 changes: 2 additions & 1 deletion src/BlockStorage/v2/Models/Snapshot.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use OpenStack\Common\Resource\Updateable;
use OpenStack\Common\Transport\Utils;
use Psr\Http\Message\ResponseInterface;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\BlockStorage\v2\Api $api
Expand Down Expand Up @@ -63,7 +64,7 @@ protected function getAliases(): array
];
}

public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
parent::populateFromResponse($response);
$this->metadata = $this->parseMetadata($response);
Expand Down
3 changes: 2 additions & 1 deletion src/BlockStorage/v2/Models/Volume.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use OpenStack\Common\Resource\Updateable;
use OpenStack\Common\Transport\Utils;
use Psr\Http\Message\ResponseInterface;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\BlockStorage\v2\Api $api
Expand Down Expand Up @@ -89,7 +90,7 @@ protected function getAliases(): array
];
}

public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
parent::populateFromResponse($response);
$this->metadata = $this->parseMetadata($response);
Expand Down
2 changes: 1 addition & 1 deletion src/Common/JsonSchema/JsonPatch.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ protected function handleObject(\stdClass $srcStruct, \stdClass $desStruct, stri

protected function shouldPartiallyReplace(\stdClass $o1, \stdClass $o2): bool
{
return count(array_diff_key((array) $o1, (array) $o2)) < count($o1);
return count(array_diff_key((array) $o1, (array) $o2)) < count((array) $o1);
}

protected function arrayDiff(array $a1, array $a2): array
Expand Down
8 changes: 4 additions & 4 deletions src/Common/Resource/AbstractResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ abstract class AbstractResource implements ResourceInterface, Serializable
*
* @param ResponseInterface $response
*
* @return AbstractResource
* @return ResourceInterface
*/
public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
if (strpos($response->getHeaderLine('Content-Type'), 'application/json') === 0) {
$json = Utils::jsonDecode($response);
Expand All @@ -59,9 +59,9 @@ public function populateFromResponse(ResponseInterface $response): self
*
* @param array $array
*
* @return mixed|void
* @return ResourceInterface
*/
public function populateFromArray(array $array): self
public function populateFromArray(array $array): ResourceInterface
{
$aliases = $this->getAliases();

Expand Down
8 changes: 4 additions & 4 deletions src/Common/Resource/ResourceInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ interface ResourceInterface
*
* @param ResponseInterface $response
*
* @return self
* @return ResourceInterface
*/
public function populateFromResponse(ResponseInterface $response);
public function populateFromResponse(ResponseInterface $response): ResourceInterface;

/**
* @param array $data
* @return mixed
* @return ResourceInterface
*/
public function populateFromArray(array $data);
public function populateFromArray(array $data): ResourceInterface;

/**
* @param string $name The name of the model class.
Expand Down
3 changes: 2 additions & 1 deletion src/Compute/v2/Models/Keypair.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use OpenStack\Common\Resource\Listable;
use OpenStack\Common\Resource\Retrievable;
use OpenStack\Common\Transport\Utils;
use OpenStack\Common\Resource\ResourceInterface;

/**
* Represents a Compute v2 Keypair
Expand Down Expand Up @@ -78,7 +79,7 @@ public function create(array $userOptions): Creatable
/**
* {@inheritDoc}
*/
public function populateFromArray(array $array): self
public function populateFromArray(array $array): ResourceInterface
{
return parent::populateFromArray(Utils::flattenJson($array, $this->resourceKey));
}
Expand Down
3 changes: 2 additions & 1 deletion src/Identity/v2/Models/Catalog.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use OpenStack\Common\Resource\OperatorResource;
use OpenStack\Common\Transport\Utils;
use Psr\Http\Message\ResponseInterface;
use OpenStack\Common\Resource\ResourceInterface;

/**
* Represents an Identity v2 service catalog.
Expand Down Expand Up @@ -36,7 +37,7 @@ protected function getAliases(): array
/**
* {@inheritDoc}
*/
public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
$entries = Utils::jsonDecode($response)['access']['serviceCatalog'];

Expand Down
4 changes: 2 additions & 2 deletions src/Identity/v2/Models/Token.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use OpenStack\Common\Transport\Utils;
use Psr\Http\Message\ResponseInterface;
use OpenStack\Common\Resource\OperatorResource;
use OpenStack\Common\Resource\ValueResource;
use OpenStack\Common\Resource\ResourceInterface;

/**
* Represents an Identity v2 Token.
Expand Down Expand Up @@ -42,7 +42,7 @@ protected function getAliases(): array
/**
* {@inheritDoc}
*/
public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
$this->populateFromArray(Utils::jsonDecode($response)['access']['token']);

Expand Down
3 changes: 2 additions & 1 deletion src/Identity/v3/Models/Catalog.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use OpenStack\Common\Resource\Alias;
use OpenStack\Common\Resource\OperatorResource;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\Identity\v3\Api $api
Expand All @@ -23,7 +24,7 @@ protected function getAliases(): array
];
}

public function populateFromArray(array $data): self
public function populateFromArray(array $data): ResourceInterface
{
foreach ($data as $service) {
$this->services[] = $this->model(Service::class, $service);
Expand Down
3 changes: 2 additions & 1 deletion src/Identity/v3/Models/Token.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use OpenStack\Common\Resource\OperatorResource;
use OpenStack\Common\Resource\Creatable;
use OpenStack\Common\Resource\Retrievable;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\Identity\v3\Api $api
Expand Down Expand Up @@ -64,7 +65,7 @@ protected function getAliases(): array
/**
* {@inheritDoc}
*/
public function populateFromResponse(ResponseInterface $response)
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
parent::populateFromResponse($response);
$this->id = $response->getHeaderLine('X-Subject-Token');
Expand Down
3 changes: 2 additions & 1 deletion src/Images/v2/Models/Image.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use OpenStack\Common\Transport\Utils;
use OpenStack\Images\v2\JsonPatch;
use Psr\Http\Message\StreamInterface;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\Images\v2\Api $api
Expand Down Expand Up @@ -97,7 +98,7 @@ protected function getAliases(): array
];
}

public function populateFromArray(array $data): self
public function populateFromArray(array $data): ResourceInterface
{
parent::populateFromArray($data);

Expand Down
3 changes: 2 additions & 1 deletion src/ObjectStore/v1/Models/Account.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use OpenStack\Common\Resource\HasMetadata;
use OpenStack\Common\Resource\Retrievable;
use Psr\Http\Message\ResponseInterface;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\ObjectStore\v1\Api $api
Expand Down Expand Up @@ -34,7 +35,7 @@ class Account extends OperatorResource implements Retrievable, HasMetadata
/**
* {@inheritdoc}
*/
public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
parent::populateFromResponse($response);

Expand Down
23 changes: 12 additions & 11 deletions src/ObjectStore/v1/Models/Container.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use OpenStack\Common\Resource\HasMetadata;
use OpenStack\Common\Resource\Listable;
use OpenStack\Common\Resource\Retrievable;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\ObjectStore\v1\Api $api
Expand Down Expand Up @@ -39,7 +40,7 @@ class Container extends OperatorResource implements Creatable, Deletable, Retrie
/**
* {@inheritdoc}
*/
public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
parent::populateFromResponse($response);

Expand All @@ -61,7 +62,7 @@ public function populateFromResponse(ResponseInterface $response): self
public function listObjects(array $options = [], callable $mapFn = null): \Generator
{
$options = array_merge($options, ['name' => $this->name, 'format' => 'json']);
return $this->model(Object::class)->enumerate($this->api->getContainer(), $options, $mapFn);
return $this->model(ObjectEntity::class)->enumerate($this->api->getContainer(), $options, $mapFn);
}

/**
Expand Down Expand Up @@ -142,11 +143,11 @@ public function getMetadata(): array
*
* @param string $name The name of the object
*
* @return Object
* @return ObjectEntity
*/
public function getObject($name): Object
public function getObject($name): ObjectEntity
{
return $this->model(Object::class, ['containerName' => $this->name, 'name' => $name]);
return $this->model(ObjectEntity::class, ['containerName' => $this->name, 'name' => $name]);
}

/**
Expand Down Expand Up @@ -177,11 +178,11 @@ public function objectExists(string $name): bool
*
* @param array $data {@see \OpenStack\ObjectStore\v1\Api::putObject}
*
* @return Object
* @return ObjectEntity
*/
public function createObject(array $data): Object
public function createObject(array $data): ObjectEntity
{
return $this->model(Object::class)->create($data + ['containerName' => $this->name]);
return $this->model(ObjectEntity::class)->create($data + ['containerName' => $this->name]);
}

/**
Expand All @@ -195,9 +196,9 @@ public function createObject(array $data): Object
* @param string $data['segmentPrefix'] The prefix that will come before each segment. If omitted, a default
* is used: name/timestamp/filesize
*
* @return Object
* @return ObjectEntity
*/
public function createLargeObject(array $data): Object
public function createLargeObject(array $data): ObjectEntity
{
/** @var \Psr\Http\Message\StreamInterface $stream */
$stream = $data['stream'];
Expand All @@ -218,7 +219,7 @@ public function createLargeObject(array $data): Object
$count = 0;

while (!$stream->eof() && $count < round($stream->getSize() / $segmentSize)) {
$promises[] = $this->model(Object::class)->createAsync([
$promises[] = $this->model(ObjectEntity::class)->createAsync([
'name' => sprintf("%s/%d", $segmentPrefix, ++$count),
'stream' => new LimitStream($stream, $segmentSize, ($count - 1) * $segmentSize),
'containerName' => $segmentContainer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,12 @@
use OpenStack\Common\Resource\Creatable;
use OpenStack\Common\Resource\Deletable;
use OpenStack\Common\Resource\HasMetadata;
use OpenStack\Common\Resource\ResourceInterface;

/**
* @property \OpenStack\ObjectStore\v1\Api $api
*/
class Object extends OperatorResource implements Creatable, Deletable, HasMetadata
class ObjectEntity extends OperatorResource implements Creatable, Deletable, HasMetadata
{
use MetadataTrait;

Expand Down Expand Up @@ -47,7 +48,7 @@ class Object extends OperatorResource implements Creatable, Deletable, HasMetada
/**
* {@inheritdoc}
*/
public function populateFromResponse(ResponseInterface $response): self
public function populateFromResponse(ResponseInterface $response): ResourceInterface
{
parent::populateFromResponse($response);

Expand Down
Loading