Skip to content

Commit

Permalink
Merge pull request #324 from alcaeus/modernise-project
Browse files Browse the repository at this point in the history
Modernise project
  • Loading branch information
alcaeus authored Oct 30, 2019
2 parents 3d0d8c4 + c84be3d commit 608a35a
Show file tree
Hide file tree
Showing 55 changed files with 1,035 additions and 753 deletions.
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 <[email protected]>
*/
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 <[email protected]>
*/
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 <[email protected]>
*/
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

0 comments on commit 608a35a

Please sign in to comment.