Skip to content

Commit

Permalink
Making a start of moving the ugly fromArray methods to dedicated Fact…
Browse files Browse the repository at this point in the history
…ories
  • Loading branch information
wtfzdotnet committed Nov 6, 2013
1 parent 3a07da7 commit 5edf3ed
Show file tree
Hide file tree
Showing 4 changed files with 273 additions and 17 deletions.
34 changes: 17 additions & 17 deletions examples/movies/model/get.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,23 @@

echo $movie->getTitle() . "\n";

echo "Cast\n";

foreach($movie->credits->cast as $person) {
printf(" - %s as %s\n", $person->getName(), $person->getCharacter());
}

foreach($movie->getCredits()->getCrew() as $person) {
printf(" - %s as %s\n", $person->getName(), $person->getJob());
}

echo "Images\n";

foreach($movie->getImages() as $image) {
printf(" - %s\n", $image->getFilePath());
}

echo "Genres\n";
//echo "Cast\n";
//
//foreach($movie->credits->cast as $person) {
// printf(" - %s as %s\n", $person->getName(), $person->getCharacter());
//}
//
//foreach($movie->getCredits()->getCrew() as $person) {
// printf(" - %s as %s\n", $person->getName(), $person->getJob());
//}
//
//echo "Images\n";
//
//foreach($movie->getImages() as $image) {
// printf(" - %s\n", $image->getFilePath());
//}
//
//echo "Genres\n";

foreach($movie->getGenres() as $genre) {
printf(" - %s\n", $genre->getName());
Expand Down
97 changes: 97 additions & 0 deletions lib/Tmdb/Factory/GenreFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?php
/**
* This file is part of the Wrike PHP API created by B-Found IM&S.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @package Wrike
* @author Michael Roterman <[email protected]>
* @copyright (c) 2013, B-Found Internet Marketing & Services
* @version 0.0.1
*/

namespace Tmdb\Factory;

use Tmdb\Model\Movie;

class MovieFactory {
/**
* Convert an array to an hydrated object
*
* @param array $data
* @return $this
*/
public static function create(array $data = array())
{
if (!$data) {
return null;
}

$movie = new Movie($data['id']);

// if (array_key_exists('alternative_titles', $data) && array_key_exists('titles', $data['alternative_titles'])) {
// $movie->setAlternativeTitles(Movie::collectGenericCollection($client, $data['alternative_titles']['titles'], new AlternativeTitle()));
// }
//
// $casts = array();
// $credits = $movie->getCredits();
//
// /** Credits */
// if (array_key_exists('credits', $data)) {
// $casts = $data['credits'];
// }
//
// if (array_key_exists('casts', $data)) {
// $casts = $data['casts'];
// }
//
// if (array_key_exists('cast', $casts)) {
// $credits->setCast(parent::collectCast($client, $casts['cast']));
// }
//
// if (array_key_exists('crew', $casts)) {
// $credits->setCrew(parent::collectCrew($client, $casts['crew']));
// }
//
// $movie->setCredits($credits);
//
/** Genres */
if (array_key_exists('genres', $data)) {
$movie->setGenres(parent::collectGenres($client, $data['genres']));
}
//
// /** Images */
// if (array_key_exists('images', $data)) {
// $movie->setImages(parent::collectImages($client, $data['images']));
// }
//
// /** Keywords */
// if (array_key_exists('keywords', $data)) {
// }
//
// if (array_key_exists('releases', $data)) {
// }
//
// if (array_key_exists('trailers', $data)) {
// }
//
// if (array_key_exists('translations', $data)) {
// }
//
// if (array_key_exists('similar_movies', $data)) {
// }
//
// if (array_key_exists('reviews', $data)) {
// }
//
// if (array_key_exists('lists', $data)) {
// }
//
// if (array_key_exists('changes', $data)) {
// }

return $movie->hydrate($data);
}

}
97 changes: 97 additions & 0 deletions lib/Tmdb/Factory/MovieFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?php
/**
* This file is part of the Wrike PHP API created by B-Found IM&S.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @package Wrike
* @author Michael Roterman <[email protected]>
* @copyright (c) 2013, B-Found Internet Marketing & Services
* @version 0.0.1
*/

namespace Tmdb\Factory;

use Tmdb\Model\Movie;

class MovieFactory {
/**
* Convert an array to an hydrated object
*
* @param array $data
* @return $this
*/
public static function create(array $data = array())
{
if (!$data) {
return null;
}

$movie = new Movie($data['id']);

// if (array_key_exists('alternative_titles', $data) && array_key_exists('titles', $data['alternative_titles'])) {
// $movie->setAlternativeTitles(Movie::collectGenericCollection($client, $data['alternative_titles']['titles'], new AlternativeTitle()));
// }
//
// $casts = array();
// $credits = $movie->getCredits();
//
// /** Credits */
// if (array_key_exists('credits', $data)) {
// $casts = $data['credits'];
// }
//
// if (array_key_exists('casts', $data)) {
// $casts = $data['casts'];
// }
//
// if (array_key_exists('cast', $casts)) {
// $credits->setCast(parent::collectCast($client, $casts['cast']));
// }
//
// if (array_key_exists('crew', $casts)) {
// $credits->setCrew(parent::collectCrew($client, $casts['crew']));
// }
//
// $movie->setCredits($credits);
//
// /** Genres */
// if (array_key_exists('genres', $data)) {
// $movie->setGenres(parent::collectGenres($client, $data['genres']));
// }
//
// /** Images */
// if (array_key_exists('images', $data)) {
// $movie->setImages(parent::collectImages($client, $data['images']));
// }
//
// /** Keywords */
// if (array_key_exists('keywords', $data)) {
// }
//
// if (array_key_exists('releases', $data)) {
// }
//
// if (array_key_exists('trailers', $data)) {
// }
//
// if (array_key_exists('translations', $data)) {
// }
//
// if (array_key_exists('similar_movies', $data)) {
// }
//
// if (array_key_exists('reviews', $data)) {
// }
//
// if (array_key_exists('lists', $data)) {
// }
//
// if (array_key_exists('changes', $data)) {
// }

return $movie->hydrate($data);
}

}
62 changes: 62 additions & 0 deletions lib/Tmdb/Model/Common/DataCollector.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php
/**
* This file is part of the Tmdb PHP API created by Michael Roterman.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @package Tmdb
* @author Michael Roterman <[email protected]>
* @copyright (c) 2013, Michael Roterman
* @version 0.0.1
*/
namespace Tmdb\Model\Common;

use Guzzle\Common\Collection as GuzzleCollection;

class Collection extends GuzzleCollection {
protected $data = array();

/**
* Allow adding objects to the collection
*
* @param $object
*/
public function addObject($object)
{
if (!is_object($object)) {
return;
}

$this->add(null, $object);
}

/**
* Allow support for adding objects
*
* @param string $key
* @param mixed $value
* @return GuzzleCollection
*/
public function add($key, $value) {
if ($key === null && is_object($value)) {
$key = spl_object_hash($value);
}

return parent::add($key, $value);
}

/**
* Allow support for getting objects
*
* @param string $key
* @return mixed|null
*/
public function get($key) {
if (is_object($key)) {
$key = spl_object_hash($key);
}

return parent::get($key);
}
}

0 comments on commit 5edf3ed

Please sign in to comment.