13.13.2 SearchDoc::setObjectReturn()
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)); }