avoo / elo-bundle
Elo库计算器的集成
0.1.0
2015-12-04 16:22 UTC
Requires
- php: >=5.3.3
- avoo/elo: ~0.2
- stof/doctrine-extensions-bundle: ~1.2
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-14 15:46:44 UTC
README
![Build Status] (https://scrutinizer-ci.com/g/avoo/EloBundle/badges/build.png?b=master) ![Scrutinizer Code Quality] (https://scrutinizer-ci.com/g/avoo/EloBundle/badges/quality-score.png?b=master) ![Latest Stable Version] (https://poser.pugx.org/avoo/elo-bundle/v/stable.svg) ![License] (https://poser.pugx.org/avoo/elo-bundle/license.svg)
Symfony 2的Elo包
安装
将avoo/elo-bundle
添加到您的composer.json
文件中
{ "require": { "avoo/elo-bundle": "~0.1" } }
Elo包使用StofDoctrineExtensionsBundle
在app/AppKernel.php
中注册包
// app/AppKernel.php public function registerBundles() { return array( // ... new Avoo\EloBundle\AvooEloBundle(), new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), ); }
默认配置
# app/config/config.yml # Doctrine Configuration doctrine: orm: auto_generate_proxy_classes: "%kernel.debug%" entity_managers: default: auto_mapping: true mappings: gedmo_loggable: type: annotation prefix: Gedmo\Loggable\Entity dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity" alias: GedmoLoggable # (optional) it will default to the name set for the mappingmapping is_bundle: false stof_doctrine_extensions: orm: default: loggable: true timestampable: true
类实现
Elo玩家类
YAML
# src/AppBundle/Resources/config/doctrine/EloPlayer.orm.yml AppBundle\Entity\EloPlayer: type: entity table: elo_player id: id: type: integer generator: strategy: AUTO oneToOne: user: targetEntity: AppBundle\Entity\User inversedBy: eloPlayer joinColumn: name: user_id referencedColumnName: id
XML
<?xml version="1.0" encoding="utf-8"?> <!-- src/AppBundle/Resources/config/doctrine/EloPlayer.orm.xml --> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="AppBundle\Entity\EloPlayer" table="elo_player"> <id name="id" type="integer" column="id"> <generator strategy="AUTO"/> </id> <one-to-one field="user" target-entity="AppBundle\Entity\User" inversed-by="eloPlayer"> <join-column name="user_id" referenced-column-name="id" /> </one-to-one> </entity> </doctrine-mapping>
注解
namespace Avoo\EloBundle\Entity; use Avoo\EloBundle\Entity\EloPlayer as BaseEloPlayer; use Doctrine\ORM\Mapping as ORM; class EloPlayer extends BaseEloPlayer { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\OneToOne(targetEntity="AppBundle\Entity\User", inversedBy="eloPlayer") * @ORM\JoinColumn(name="user_id", referencedColumnName="id") */ protected $user; }
Elo与类
YAML
# src/AppBundle/Resources/config/doctrine/EloVersus.orm.yml AppBundle\Entity\Eloversus: type: entity table: elo_versus id: id: type: integer generator: strategy: AUTO manyToOne: playerA: targetEntity: AppBundle\Entity\EloPlayer joinColumn: name: player_a referencedColumnName: id playerB: targetEntity: AppBundle\Entity\EloPlayer joinColumn: name: player_b referencedColumnName: id
XML
<?xml version="1.0" encoding="utf-8"?> <!-- src/AppBundle/Resources/config/doctrine/EloVersus.orm.xml --> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="AppBundle\Entity\EloVersus" table="elo_versus"> <id name="id" type="integer" column="id"> <generator strategy="AUTO"/> </id> <many-to-one field="playerA" target-entity="AppBundle\Entity\EloPlayer"> <join-column name="player_a" referenced-column-name="id" /> </many-to-one> <many-to-one field="playerB" target-entity="AppBundle\Entity\EloPlayer"> <join-column name="player_b" referenced-column-name="id" /> </many-to-one> </entity> </doctrine-mapping>
注解
namespace Avoo\EloBundle\Entity; use Avoo\EloBundle\Entity\EloVersus as BaseEloVersus; use Doctrine\ORM\Mapping as ORM; class EloVersus extends BaseEloVersus { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Player") * @ORM\JoinColumn(name="player_a", referencedColumnName="id") */ protected $playerA; /** * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Player") * @ORM\JoinColumn(name="player_b", referencedColumnName="id") */ protected $playerB; }
用户类
警告您需要实现Avoo/Elo/Model/EloUserInterface
use Avoo\Elo\Model\EloUserInterface; class User implements EloUserInterface { /** * @var EloPlayerInterface $eloPlayer */ protected $eloPlayer; /** * Get elo player * * @return EloPlayerInterface */ public function getEloPlayer() { return $this->eloPlayer; } }
YAML
# src/AppBundle/Resources/config/doctrine/User.orm.yml AppBundle\Entity\User: type: entity table: elo_user id: id: type: integer generator: strategy: AUTO oneToOne: eloPlayer: targetEntity: AppBundle\Entity\EloPlayer mappedBy: user
XML
<entity name="AppBundle\Entity\User" table="elo_user"> <one-to-one field="eloPlayer" mapped-by="user" target-entity="AppBundle\Entity\EloPlayer" /> </entity>
注解
<?php use Avoo\Elo\Model\EloUserInterface; use Doctrine\ORM\Mapping as ORM; class User implements EloUserInterface { /** * @ORM\OneToOne(targetEntity="AppBundle\Entity\EloPlayer", mappedBy="user") */ protected $eloPlayer; }
默认用法
use Avoo\Elo\EloPoint; use Avoo\Elo\Model\EloVersusInterface; use Avoo\Elo\Model\EloAggregationInterface; /** @var EloPoint $calculator */ $calculator = $this->get('avoo_elo.calculator'); /** @var EloVersusInterface $match */ $calculator->calculate($match); /** @var EloAggregationInterface $aggregation */ $aggregation = $calculator->getAggregation();
许可证
此包在MIT许可证下发布。请参阅包中的完整许可证。