positibe/发布

PositibeLabs 项目的基础库,用于发布实体

0.2.0.0 2017-03-29 14:18 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:14:50 UTC


README

此库提供了一些特性,可用于实现 Symfony\Cmf\Bundle\CoreBundle\Translatable\TranslatableInterfaceSymfony\Cmf\Bundle\CoreBundle\PublishWorkflow\PublishTimePeriodInterface 接口的 doctrine 实体。

PublishableTrait

此特质为实现 TranslatableInterface 的实体提供了默认映射。

[php]
namespace Positibe\Component\Publishable\Entity;

trait PublishableTrait
{
    /**
     * @var boolean
     *
     * @ORM\Column(name="publishable", type="boolean")
     */
    protected $publishable = true;

    public function isPublishable()
    {
        return $this->publishable;
    }

    public function setPublishable($boolean)
    {
        $this->publishable = $boolean;
    }
}

PublishTimePeriodTrait

此特质为实现 PublishTimePeriodInterface 的实体提供了默认映射。

[php]
namespace Positibe\Component\Publishable\Entity;

trait PublishTimePeriodTrait
{
    /**
     * @var \DateTime
     *
     * @ORM\Column(name="publish_start_date", type="datetime", nullable=TRUE)
     */
    protected $publishStartDate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="publish_end_date", type="datetime", nullable=TRUE)
     */
    protected $publishEndDate;

    public function setPublishStartDate(\DateTime $startDate = null)
    {
        $this->publishStartDate = $startDate;
    }

    public function getPublishStartDate()
    {
        return $this->publishStartDate;
    }

    public function setPublishEndDate(\DateTime $endDate = null)
    {
        $this->publishEndDate = $endDate;
    }

    public function getPublishEndDate()
    {
        return $this->publishEndDate;
    }
}

使用 PHP 特质

这些是简单的 PHP 特质,所以你可以这样使用它们。

[php]
namespace Blog\Entity;

use Symfony\Cmf\Bundle\CoreBundle\PublishWorkflow\PublishTimePeriodInterface;
use Symfony\Cmf\Bundle\CoreBundle\PublishWorkflow\PublishableInterface;
use Positibe\Component\Publishable\Entity\PublishableTrait;
use Positibe\Component\Publishable\Entity\PublishTimePeriodTrait;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table()
 * @ORM\Entity
 */
class Post implement PublishableInterface, PublishTimePeriodInterface
{
    use PublishableTrait;
    use PublishTimePeriodTrait;
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
}

注意,你不需要创建任何东西来实现这些接口。

注意:要使用特质系统,您需要使用 PHP > 5.4。

重要:此库不直接依赖于 symfony-cmf/core-bundle,因此您可以在不使用此库的情况下使用它,并且需要安装以使用接口。