13.13.2 SearchDoc::setObjectReturn()

Cette méthode permet de choisir le type de retour qui va être fait.

13.13.2.1 Description

void setObjectReturn ( bool $returnobject = true )

Cette méthode permet de choisir le type de retour que va effectuer la méthode SearchDoc::search ou SearchDoc::getDocumentList.

Les deux types de retour possibles sont :

13.13.2.1.1 Avertissements

Aucun.

13.13.2.2 Liste des paramètres

(bool) returnObject (valeur par défaut : true)
Si le paramètre est à true alors le retour est un objet documentaire, sinon c'est un résultat brut.

Note : Par défaut un searchDoc retourne des résultats brut.

13.13.2.3 Valeur de retour

void

13.13.2.4 Erreurs / Exceptions

Aucune.

13.13.2.5 Historique

Aucun.

13.13.2.6 Exemples

13.13.2.6.1 Retour de document brut

$s=new SearchDoc("","DIR");
$s->setObjectReturn(false);
$rawDocuments=$s->search();
foreach ($rawDocuments as $docid=>$rawDoc) {
  printf("%d) %s (%s)", 
       $docid,
       $rawDoc["title"],
       $rawDoc["ba_desc"]);
}

13.13.2.6.2 Retour de document objet

Dans ce cas, les hooks Doc::preAffect() et Doc::postAffect() sont appelés dans la boucle pour chacun des documents.

$s=new SearchDoc("","DIR");
$s->setObjectReturn(true);
$documentList=$s->search()->getDocumentList();
foreach ($documentList as $docid=>$doc) {
  printf("%d) %s (%s)", 
       $docid,
       $doc->getTitle(),
       $doc->getRawValue(\Dcp\AttributeIdentifiers\Dir::ba_title));
}

13.13.2.7 Notes

Lorsque le retour est de type objet documentaire, les documents fournis par l'itération sont des références internes et cette référence est réutilisée par l'itérateur si le document est de la même famille qu'un document précédent dans l'itération.

S'il est nécessaire de mémoriser un certain document durant l'itération, il est nécessaire de cloner l'objet sinon la variable sera modifiée lors des itérations suivantes.

$s=new SearchDoc("","DIR");
$s->setObjectReturn(true);
$documentList=$s->search()->getDocumentList();
$memoFolder=null;
foreach ($documentList as $docid=>$doc) {
  if ($doc->name == "MYFOLDER") {
     $memoFolder=$doc; // INCORRECT 
  }
}
if (memoFolder) {
  // memoFolder n'est pas forcément celui avec le nom "MYFOLDER"
  printf("%d) %s (%s)", 
         $memoFolder->id,
         $memoFolder->getTitle(),
         $memoFolder->getRawValue(\Dcp\AttributeIdentifiers\Dir::ba_title));
 }

13.13.2.8 Voir aussi

×