OK, voici mon dilemme:PHPFlickr script ... pourrait-il être plus propre/plus mince?
J'ai lu partout sur le nombre de gars veulent être en mesure d'afficher une série d'images de Flickr utilisant PHPFlickr, mais se lamenter sur la façon dont l'API pour photosets ne met pas photo individuelle descriptions. Certains ont essayé de configurer leur PHP de sorte qu'il va tirer la description sur chaque photo que le script assemble la galerie sur la page. Cependant, la méthode a montré à quel point elle peut être lente et inefficace.
J'ai trouvé une autre idée de créer une chaîne de valeurs séparées par des virgules avec la photo d'identité et la description. Je le stocke sur la base de données MySQL et je l'appelle quand j'ai mon script assembler la galerie sur la page. J'utiliserais exploser pour créer un tableau de la photo d'identité et sa description, puis appelez-le pour combler les lacunes ... donc moins d'appels API et une page plus rapide. Donc, dans l'admin back-end, j'ai un formulaire où je configure les informations pour la galerie, et je donne un Set ID. Le script passerait alors et rendrait cette chaîne de valeurs séparées ("| ~ |" comme séparation). Voici ce que je suis venu avec:
include("phpFlickr.php");
$f = new phpFlickr("<api>");
$descArray = "";
// This will create an Array of Photo ID from the Set ID.
// $setFeed is the set ID brought in from the form.
$photos = $f->photosets_getPhotos($setFeed);
foreach ($photos['photoset']['photo'] as $photo) {
$returnDesc = array();
$photoID = $photo['id'];
$rsp = $f->photos_getInfo($photoID);
foreach ($rsp as $pic) {
$returnDesc[] = htmlspecialchars($pic['description'], ENT_QUOTES);
}
$descArray .= $photoID."|~|".$returnDesc[0]."|~|";
}
La chaîne de descArray $ serait alors placé dans la chaîne MySQL qu'il met dans la base de données avec d'autres informations portées à partir de la forme.
Ma première question est de savoir si j'ai utilisé une seconde boucle foreach pour obtenir ces descriptions? J'ai essayé de suivre d'autres exemples sur le net qui ne l'utilisaient pas, mais ils n'ont jamais fonctionné. Quand j'ai lancé la deuxième foreach, ça a marché. Aurais-je dû faire autre chose? J'ai remarqué que les données retournées seraient deux entrées. L'un étant la description, et l'autre juste un "o" ... d'où le tableau $ returnDesc donc je pourrais juste obtenir la chaîne que je voulais et pas l'autre.
La deuxième question est de savoir si j'ai rendu cela trop compliqué ou non. J'aime essayer d'apprendre à écrire du code plus propre et plus léger, et je cherchais des opinions.
Les suggestions d'amélioration sont les bienvenues. Merci d'avance.