Grazie ho visto

e' un po complicato comunque ...

Ho creato una libreria che gestisce le revisioni di un testo sfruttando come base dati un nodo xml
fatto cosi
Codice PHP:
<main>

<
revnode last="2">
<
text>testo dell'ultima revisione</text>
<rev n=0>stringa di diff</rev>
<rev n=1>stringa di diff</rev>
<rev n=2>stringa di diff</rev>
</revnode> 
ho fatto tutte le funzioni che creano un nodo revisione e lo aggiornano e restituiscono la revisione
che mi interessa e potrei utilizzare tranquillamente quelle.

pero ho esteso la libreria con queste funzioni ometto il codice se no diventa un mattone
Codice PHP:
class RevsionXmlNode extends SimpleXMLElement 
{
    public function 
is_RevNode() {    }
    public function 
addChildRev($text,$attrlist NULL) {    }
    public function 
addRevision($text $attrlist NULL) {}
    public function 
getRevision($nrev_hi = -1,$nrev_low = -1) {}
    public function 
getRevDiff($nrev_hi = -1,$nrev_low = -1) {}
    public function 
RevRestore($nrev$attrlist NULL) {}
    public function 
RevNum() {    }


in questo modo mi risulta piu facile e immediato da utilizzare come prova ho fatto
questo

Codice PHP:


$xml 
simplexml_load_string('<base></base>','RevisionXmlNode');
$revnode $xml->addChildRev("Ecco la mia nuova classe");


if (
$xml->revnode->is_revnode()) {echo "E' un nodo di revisioni \n";} else {echo "non e' un nodo di revisioni\n";}
if (
$revnode->is_revnode()) {echo "E' un nodo di revisioni \n";} else {echo "non e' un nodo di revisioni\n";}

echo 
$revnode->getRevision();

$lastrev $revnode->addRevision("una seconda versione");
echo 
"aggiunta la $lastrev revisione con stringa\n";
echo 
$revnode->getRevision(),"\n";

$lastrev $revnode->addRevision("ciao\ncome stai ?\nio bene e tu ?\n");
echo 
"aggiunta la $lastrev revisione con stringa\n";
echo 
$revnode->getRevision(),"\n";
$lastrev $revnode->addRevision("ciao\ncome stai ?\n malissimo");
echo 
"aggiunta la $lastrev revisione con stringa\n";
echo 
$revnode->getRevision(),"\n";

echo 
"torno alla revision 2\n";
echo 
$revnode->RevRestore(2),"\n";

for (
$i 0$i $revnode->RevNum(); $i ++) {
    echo 
"\n\n-----------rev $i -----------\n";
    echo 
$revnode->getRevision($i);


tieni conto che cosi facendo oltre a gestire i nodi che mi interessano posso accedere all'albero
xml con tutte le possibila' che offre simpleXML

come ti sembra ?

Andrea