PHP DomDocument, ponowne użycie XSLTProcessor, jest stabilny / bezpieczny?
Używam poniższej funkcji, ale nie jestem pewien co do tego jest zawsze bezpieczna ... Czy to? Brak tam pamięci DOM lub „rezydualnego XSLT”?
function XSLproc_reuse($domXsl) {
static $XSLproc=NULL;
if (!$XSLproc)
$XSLproc = new XSLTProcessor();
return $XSLproc->importStylesheet($domXsl); // STABLE?
}
Nie ma żadnych przyszłych „niespodziewanych skutków ubocznych”?
PS: Mam pewne dziwne błędy związane z przetwarzaniem XSLT ... Więc, zamieszczając jedną (z wielu innych) hipotez tutaj, aby sprawdzić, czy ok lub trzeba unikać. Tojest bardziej widoczne w XPath, zobacz inne powiązane pytanie.
Innym sposobem ponownego użycia arkusza przetwarzania (którego używałem w mojej bibliotece) jest ponowne użycie również importowanego XSLT:
function XSLproc_reuse2($nameOrDomXsl='', $domXsl=NULL) {
static $XSLproc=NULL;
static $name='';
if (!$XSLproc)
$XSLproc = new XSLTProcessor();
// else reune of the already initialized $XSLproc.
if (is_object($nameOrDomXsl))
return $XSLproc->importStylesheet($nameOrDomXsl); // STABLE?
elseif ($nameOrDomXsl==$name);
return $XSLproc; // imported in the last call, STABLE?
else { // recording for future reuse:
$name = $nameOrDomXsl;
return $XSLproc->importStylesheet($domXsl);
}
}