Skip to content
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

Modernise project #324

Merged
merged 9 commits into from
Oct 30, 2019
Merged
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
24 changes: 24 additions & 0 deletions .doctrine-project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"active": true,
"name": "Data fixtures",
"slug": "data-fixtures",
"docsSlug": "doctrine-data-fixtures",
"versions": [
{
"name": "1.4",
"branchName": "master",
"slug": "latest",
"upcoming": true
},
{
"name": "1.3",
"branchName": "1.3",
"slug": "1.3",
"current": true,
"aliases": [
"current",
"stable"
]
}
]
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
phpunit.xml
vendor/
.phpcs-cache
composer.lock
18 changes: 15 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,30 @@ cache:
- $HOME/.composer/cache

php:
- 7.1
- 7.2
- 7.3
- 7.4snapshot

services: mongodb

before_install:
- pecl install -f mongodb
- composer validate --strict

before_script:
- composer install
install:
- composer update --prefer-stable --prefer-dist ${COMPOSER_FLAGS}

script:
- ./vendor/bin/phpunit -v

jobs:
include:
# Tests the lowest set of dependencies
- php: 7.2
env: LOWEST COMPOSER_FLAGS="--prefer-lowest"

- stage: Code Quality
env: CODING_STANDARDS
php: 7.2
script:
- ./vendor/bin/phpcs
7 changes: 4 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@
}
],
"require": {
"php": "^7.1",
"doctrine/common": "~2.2"
"php": "^7.2",
"doctrine/common": "^2.11"
},
"conflict": {
"doctrine/phpcr-odm": "<1.3.0"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/coding-standard": "^6.0",
"doctrine/dbal": "^2.5.4",
"doctrine/mongodb-odm": "^1.3.0",
"doctrine/orm": "^2.5.4",
Expand All @@ -41,7 +42,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
"dev-master": "1.4.x-dev"
}
},
"autoload": {
Expand Down
50 changes: 29 additions & 21 deletions lib/Doctrine/Common/DataFixtures/AbstractFixture.php
Original file line number Diff line number Diff line change
@@ -1,86 +1,94 @@
<?php

declare(strict_types=1);

namespace Doctrine\Common\DataFixtures;

use Doctrine\Common\DataFixtures\ReferenceRepository;
use BadMethodCallException;

/**
* Abstract Fixture class helps to manage references
* between fixture classes in order to set relations
* among other fixtures
*
* @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
*/
abstract class AbstractFixture implements SharedFixtureInterface
{
/**
* Fixture reference repository
*
*
* @var ReferenceRepository
*/
protected $referenceRepository;

/**
* {@inheritdoc}
*/
public function setReferenceRepository(ReferenceRepository $referenceRepository)
{
$this->referenceRepository = $referenceRepository;
}

/**
* Set the reference entry identified by $name
* and referenced to managed $object. If $name
* already is set, it overrides it
*
*
* @see Doctrine\Common\DataFixtures\ReferenceRepository::setReference
*
* @param string $name
* @param object $object - managed object
* @see Doctrine\Common\DataFixtures\ReferenceRepository::setReference
*
* @return void
*/
public function setReference($name, $object)
{
$this->referenceRepository->setReference($name, $object);
}

/**
* Set the reference entry identified by $name
* and referenced to managed $object. If $name
* already is set, it throws a
* already is set, it throws a
* BadMethodCallException exception
*
*
* @see Doctrine\Common\DataFixtures\ReferenceRepository::addReference
*
* @param string $name
* @param object $object - managed object
* @see Doctrine\Common\DataFixtures\ReferenceRepository::addReference
* @throws \BadMethodCallException - if repository already has
* a reference by $name
*
* @return void
*
* @throws BadMethodCallException - if repository already has a reference by $name.
*/
public function addReference($name, $object)
{
$this->referenceRepository->addReference($name, $object);
}

/**
* Loads an object using stored reference
* named by $name
*
* @param string $name
*
* @see Doctrine\Common\DataFixtures\ReferenceRepository::getReference
*
* @param string $name
*
* @return object
*/
public function getReference($name)
{
return $this->referenceRepository->getReference($name);
}

/**
* Check if an object is stored using reference
* named by $name
*
* @param string $name
*
* @see Doctrine\Common\DataFixtures\ReferenceRepository::hasReference
* @return boolean
*
* @param string $name
*
* @return bool
*/
public function hasReference($name)
{
Expand Down
56 changes: 19 additions & 37 deletions lib/Doctrine/Common/DataFixtures/DependentFixtureInterface.php
Original file line number Diff line number Diff line change
@@ -1,37 +1,19 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/

namespace Doctrine\Common\DataFixtures;

/**
* DependentFixtureInterface needs to be implemented
* by fixtures which depend on other fixtures
*
* @author Gustavo Adrian <comfortablynumb@gmail.com>
*/
interface DependentFixtureInterface
{
/**
* This method must return an array of fixtures classes
* on which the implementing class depends on
*
* @return array
*/
public function getDependencies();
}
<?php

declare(strict_types=1);

namespace Doctrine\Common\DataFixtures;

/**
* DependentFixtureInterface needs to be implemented by fixtures which depend on other fixtures
*/
interface DependentFixtureInterface
{
/**
* This method must return an array of fixtures classes
* on which the implementing class depends on
*
* @return array
*/
public function getDependencies();
}
Original file line number Diff line number Diff line change
@@ -1,29 +1,24 @@
<?php

declare(strict_types=1);

namespace Doctrine\Common\DataFixtures\Event\Listener;

use Doctrine\Common\EventSubscriber;
use Doctrine\Common\DataFixtures\ReferenceRepository;
use Doctrine\Common\EventSubscriber;
use Doctrine\ODM\MongoDB\Event\LifecycleEventArgs;

/**
* Reference Listener populates identities for
* stored references
*
* @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
*/
final class MongoDBReferenceListener implements EventSubscriber
{
/**
* @var ReferenceRepository
*/
/** @var ReferenceRepository */
private $referenceRepository;

/**
* Initialize listener
*
* @param ReferenceRepository $referenceRepository
*/
public function __construct(ReferenceRepository $referenceRepository)
{
Expand All @@ -35,28 +30,27 @@ public function __construct(ReferenceRepository $referenceRepository)
*/
public function getSubscribedEvents()
{
return [
'postPersist'
];
return ['postPersist'];
}

/**
* Populates identities for stored references
*
* @param LifecycleEventArgs $args
*/
public function postPersist(LifecycleEventArgs $args)
{
$object = $args->getDocument();

if (($names = $this->referenceRepository->getReferenceNames($object)) !== false) {
foreach ($names as $name) {
$identity = $args->getDocumentManager()
->getUnitOfWork()
->getDocumentIdentifier($object);
$names = $this->referenceRepository->getReferenceNames($object);
if ($names === false) {
return;
}

foreach ($names as $name) {
$identity = $args->getDocumentManager()
->getUnitOfWork()
->getDocumentIdentifier($object);

$this->referenceRepository->setReferenceIdentity($name, $identity);
}
$this->referenceRepository->setReferenceIdentity($name, $identity);
}
}
}
Loading