Browse Source

init

master
Simon Vieille 3 years ago
commit
417cf9dc86
6 changed files with 341 additions and 0 deletions
  1. +126
    -0
      Article.php
  2. +3
    -0
      ArticleDao.php
  3. +72
    -0
      User.php
  4. +0
    -0
      UserDao.php
  5. +66
    -0
      Vote.php
  6. +74
    -0
      VoteDao.php

+ 126
- 0
Article.php View File

@@ -0,0 +1,126 @@
<?php

/**
* Class Article
* @author Simon Vieille <simon@deblan.fr>
*/
class Article
{
/**
* @var integer
*/
protected $id;

/**
* @var integer
*/
protected $title;
/**
* @var integer
*/
protected $content;

/**
* @var array $votes;
*/
protected $votes = [];


/**
* @param int $id
* @return Article
*/
public function setId($id)
{
$this->id = (int) $id;

return $this;
}

/**
* @return int $id
*/
public function getId()
{
return $this->id;
}

/**
* @param string $title
* @return Article
*/
public function setTitle($title)
{
$this->title = (string) $title;

return $this;
}

/**
* @return string $title
*/
public function getTitle()
{
return $this->title;
}

/**
* @param string $content
* @return Article
*/
public function setContent($content)
{
$this->content = (string) $content;

return $this;
}

/**
* @return string $content
*/
public function getContent()
{
return $this->content;
}


/**
* @param Vote $vote
* @return Article
*/
public function addVote(Vote $vote)
{
$this->votes[] = $vote;

return $this;
}

/**
* @param array $votes
* @return Article
*/
public function setVotes(array $votes)
{
foreach ($votes as $vote) {
$vote->setArticle($this);
}

$this->votes = $votes;

return $this;
}

/**
* @return array $votes
*/
public function getVotes()
{
if (empty($this->votes)) {
$this->votes = VoteDao::create()->findByArticle($this);
}

return $this->votes;
}
}


+ 3
- 0
ArticleDao.php View File

@@ -0,0 +1,3 @@
<?php



+ 72
- 0
User.php View File

@@ -0,0 +1,72 @@
<?php

/**
* Class User
* @author Simon Vieille <simon@deblan.fr>
*/
class User
{
/**
* @var integer
*/
protected $id;
/**
* @var array $votes;
*/
protected $votes = [];

/**
* @param int $id
* @return User
*/
public function setId($id)
{
$this->id = (int) $id;

return $this;
}

/**
* @return int $id
*/
public function getId()
{
return $this->id;
}
/**
* @param Vote $vote
* @return Article
*/
public function addVote(Vote $vote)
{
$this->votes[] = $vote;

return $this;
}

/**
* @param array $votes
* @return Article
*/
public function setVotes(array $votes)
{
foreach ($votes as $vote) {
$vote->setUser($this);
}

$this->votes = $votes;

return $this;
}

/**
* @return array $votes
*/
public function getVotes()
{
return $this->votes;
}
}


+ 0
- 0
UserDao.php View File


+ 66
- 0
Vote.php View File

@@ -0,0 +1,66 @@
<?php

/**
* Class Vote
* @author Simon Vieille <simon@deblan.fr>
*/
class Vote
{
/**
* @var Article
*/
protected $article;
/**
* @var User
*/
protected $user;


/**
* @param Article $article
* @return
*/
public function setArticle($article)
{
$this->article = $article;
if ($article) {
$this->article->addVote($this);
}

return $this;
}

/**
* @return Article $article
*/
public function getArticle()
{
return $this->article;
}

/**
* @param User $user
* @return
*/
public function setUser($user)
{
$this->user = $user;

if ($user) {
$this->user->addVote($this);
}

return $this;
}

/**
* @return User $user
*/
public function getUser()
{
return $this->user;
}
}


+ 74
- 0
VoteDao.php View File

@@ -0,0 +1,74 @@
<?php

/**
* Class VoteDao
* @author Simon Vieille <simon@deblan.fr>
*/
class VoteDao
{
protected $pdo;

public function __construct()
{
$this->pdo = new Pdo('mysql:dbname=test;host=127.0.0.1', 'root', 'root');
}

public static function create()
{
return new static();
}

public function findByArticle(Article $article)
{
$query = $this->pdo->prepare('select * from vote where article_id=:article_id');
$query->execute([
':article_id' => $article->getId(),
]);

$results = $query->fetchAll();
$datas = [];

foreach ($results as $result) {
$datas[] = $this->hydrate($result);
}

return $datas;
}

public function findById(Article $article)
{
$query = $this->pdo->prepare('select * from vote where article_id=:article_id');
$query->execute([
':article_id' => $article->getId(),
]);

$results = $query->fetch();

if (!empty($results)) {
return $this->hydrate($result);
}
}
public function hydrate(array $datas)
{
$vote = new Vote();
zR
if (isset($datas['id'])) {
$vote->setId($datas['id']);
}
if (isset($datas['article_id'])) {
$vote->setArticle(ArticleDao::create()->findById($datas['article_id']));
}
if (isset($datas['user_id'])) {
$vote->setUser(UserDao::create()->findById($datas['article_id']));
}

return $vote;
}
}


Loading…
Cancel
Save