Pagina 7 di 37 primaprima ... 5 6 7 8 9 17 ... ultimoultimo
Visualizzazione dei risultati da 61 a 70 su 366
  1. #61
    la tua classe mostra un Oggetto chiamato Array con zero chiavi,
    Non ho ancora uplodato la versione con il baco corretto, quindi la prova che hai fatto è identica a quella che potevi fare qualche giorno fa
    Me ne sono dimenticato, appena ho un minuto faccio l'upload
    Dal lavoro purtroppo non posso

    mentre se serializzi
    var o = new Object();
    Questa è stata una scelta, un oggetto generico vuoto e un array associativo vuoto in PHP sono praticamente la stessa cosa.
    Quindi ho preferito renderlo come array in PHP, anzichè usare stdClass. Ma ci vuole un attimo a cambiare.


    Comunque direi che a suon di debug e test sui benchmark sta venendo fuori un ottimo lavoro .

    Appena posso ci lavoro un po' e provo a ottenere di nuovo dei tempi migliori della tua
    per favore NIENTE PVT TECNICI da sconosciuti

  2. #62
    Originariamente inviato da Fabio Heller
    Non ho ancora uplodato la versione con il baco corretto, quindi la prova che hai fatto è identica a quella che potevi fare qualche giorno fa
    ah ... ecco


    Originariamente inviato da Fabio Heller
    Questa è stata una scelta, un oggetto generico vuoto e un array associativo vuoto in PHP sono praticamente la stessa cosa.
    ma non propriamente la stessa cosa in JS ... ho preferito far tornare a JS quello che è di JS, dove posso evitare di cambiare tipo di dato lo faccio.
    Per farti un esempio, se serializzo un Array e in deserializzazione viene fuori un oggetto questo
    o.push('test');
    genera un errore ... eppure mi dovrei aspettare un array ...
    idem se serializzo un oggetto e mi torna un array, php gestisce questi 2 tipi analoghi allo stesso modo ma JS no, quindi per correttezza e coerenza nella serializzazione/deserializzazione ho preferito passare Array, a prescindere dal tipo di chiavi, come array, ed Object, come Object.


    Originariamente inviato da Fabio Heller
    Quindi ho preferito renderlo come array in PHP, anzichè usare stdClass. Ma ci vuole un attimo a cambiare.
    è che PHP dovrebbe poterlo gestire come oggetto e non come array , senno' cambia il tipo in ritorno


    Originariamente inviato da Fabio Heller
    Comunque direi che a suon di debug e test sui benchmark sta venendo fuori un ottimo lavoro .
    Appena posso ci lavoro un po' e provo a ottenere di nuovo dei tempi migliori della tua
    sto' contest non mi dispiace
    pero' ti prego, cerca di non usare la proto sui tipi



    Detto questo .... m'e' venuto un dubbio atroce ... come risolvi il fatto che un oggetto php serializzato potrebbe non avere un corrispondente in JS e viceversa ?

    attualmente c'e' un problema nella mia e c'ho pensato solo poi ... se serializzi una tua classe in php javascript non sa come riprodurla, visto che tenta di creare ed assegnare un ipotetico
    var o = new MyClass();
    dove MyClass e' definita in php ma non in JS, mentre l'invio di un Date o di un Error ( o di un Object ) , tipi nativi di JS, potrebbero dare lo stesso problema al php, non ritrovandosi la strutura.

    Come affrontiamo lo scambio di oggetti ? :master:


    io avevo pensato di verificare l'esistenza di MyClass dove se falsa, in run time viene creata
    function MyClass(){}
    al fine di non avere problemi di errori ... ma non so ne se e' il metodo migliore, ne come comportarmi dall' altra parte, su php ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #63
    Originariamente inviato da andr3a

    Detto questo .... m'e' venuto un dubbio atroce ... come risolvi il fatto che un oggetto php serializzato potrebbe non avere un corrispondente in JS e viceversa ?

    attualmente c'e' un problema nella mia e c'ho pensato solo poi ... se serializzi una tua classe in php javascript non sa come riprodurla, visto che tenta di creare ed assegnare un ipotetico
    var o = new MyClass();
    dove MyClass e' definita in php ma non in JS, mentre l'invio di un Date o di un Error ( o di un Object ) , tipi nativi di JS, potrebbero dare lo stesso problema al php, non ritrovandosi la strutura.

    Come affrontiamo lo scambio di oggetti ? :master:


    io avevo pensato di verificare l'esistenza di MyClass dove se falsa, in run time viene creata
    function MyClass(){}
    al fine di non avere problemi di errori ... ma non so ne se e' il metodo migliore, ne come comportarmi dall' altra parte, su php ...
    Non so se in javascript si possa determinare se una classe esiste oppure no, e non so se tentare di istanziare un oggetto inesistente dia un errore intercettabile da try...catch

    Il problema lo avevo affrontato in Actionscript, mentre lo avevo posposto per javascript, in attesa di un'eventuale soluzione migliore.

    In Actionscript avevo realizzato una classe che si aspettava un certo numero di oggetti predefinito, se l'oggetto che arrivava da PHP era tra questi lo restituiva, altrimenti creava l'oggetto generico PHPobject.
    per favore NIENTE PVT TECNICI da sconosciuti

  4. #64
    Originariamente inviato da Fabio Heller
    Non so se in javascript si possa determinare se una classe esiste oppure no, e non so se tentare di istanziare un oggetto inesistente dia un errore intercettabile da try...catch
    che ne dici di questo ?
    gia' implementato nella classe online in devpro
    codice:
    var o = 'Test';
    if(eval("typeof("+o+") == 'undefined'"))
    	eval('function '+o+'(){}');
    var a = new Test();
    alert(a);
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #65
    [edit]

    con firefox ed explorer funziona, se va con tutti i browser è ok.

    Però ti costringe ad assegnare tutti gli oggetti ad una variabile e inoltre devi aggiungere un terzo eval qui

    var a = new Test();

    le prestazioni rimangono accettabili?

    ...beh non si può avere tutto
    per favore NIENTE PVT TECNICI da sconosciuti

  6. #66
    Originariamente inviato da Fabio Heller
    [edit]
    Però ti costringe ad assegnare tutti gli oggetti ad una variabile
    io restituisco un nuovo Object comunque, lo facevo anche prima, restituisco Array() / Object() / Date() / Error() e con questa modifica pure MiaClassePHP()



    Originariamente inviato da Fabio Heller
    e inoltre devi aggiungere un terzo eval qui

    var a = new Test();
    no no ... solo 2, poiche' prima passavo comunque per eval
    In soldoni nella mia unserialize prima era
    codice:
    tmp = 'tmp = this.__common(' + tmp.substr((a.length + 4),parseInt(a)) + '());';
    eval(tmp);
    adesso invece è
    codice:
    var o = tmp.substr((a.length+4),parseInt(a));
    if(eval("typeof("+o+") == 'undefined'"))
    	eval('function '+o+'(){}');
    tmp = 'tmp = this.__common('+o+'());';
    eval(tmp);
    e come hai visto dai tests, prima con eval era già performante ...




    Originariamente inviato da Fabio Heller
    le prestazioni rimangono accettabili?

    ...beh non si può avere tutto
    faro' dei tests con i bench postati nell' altra pagina, ti diro' i risultati
    P.S. forse con classi da PHP perde un po' ... ma non credo ci sia altra soluzione ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #67
    codice:
    andr3a
    _____________________________
    browser		ser	uns
    -----------------------------
    FireFox		158	162.4
    Opera		82	102.2
    IE 6 SP2	446.8	388.4
    -----------------------------
    		229	218
    ho aggiunto kentacoso tra i credits per il loop più veloce sulle chiavi ... a dire il vero la velocità maggiore si sente solo su IE 6 SP2 poiche' con il mio metodo stavo a 209 di average per deserializzazione ... vabbeh, essendo IE il più lento credo sia doveroso, per il suo dominio tra i browser, far slittare di pochi punti gli altri per migliorare quanto più possibile IE.

    come è facile notare, stiamo a 16 millisecondi sopra rispetto ai tests precedenti ... tu che dici Fabio, ci accontentiamo a favore della portabilità degli oggetti ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #68
    mi introduco in sta discussione che seguo da un pezzo per fare una domandina ina ina

    nel caso di classi serializzate ...

    mettiamo che io ho la classe

    CiccinoClass

    e la voglio spedire a JS ... tutte le proprietà pubbliche/private che fine fanno? ... e al contrario?

    (chiedo questo perché se già non viene fatto sarebbe molto interessante implementarlo)

    mettiamo questo caso

    php mi estrae dei valori dal database e mi instanzia una classe chiamata Utente per ogni risultato. Questa classe contiene gli utenti, le password, i permessi, la data di iscrizione ed altre proprietà

    Se questa classe viene inviata a JS le proprietà pubbliche/private (mettendo che si chiamino nello stesso modo) vengono settate? e quando modifico queste via javascript e le voglio salvare di nuovo nel db ... questi dati che spedisco a php vengono serializzati e vengono reinstanziate le classe settando le dovute proprietà?

    con la reflection dovrebbe essere fattibile una cosa di questo tipo
    http://docs.php.net/en/language.oop5.reflection.html

    ?

    altrimenti si dovrebbe implementare una classe Serializable (e non solo l'interfaccia al momento presente) che tramite la reflection acquisisce tutte le proprietà della classe e le impacchetta e poi al momento della deserializzazione le reimposta
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #69
    Originariamente inviato da daniele_dll
    nel caso di classi serializzate ...

    mettiamo che io ho la classe

    CiccinoClass

    e la voglio spedire a JS ... tutte le proprietà pubbliche/private che fine fanno?


    in php se serializzi una classe devi avere la classe presente quando la deserializzi o te la ritrovi completamente inutilizzabile.
    Quindi i metodi non vengono mai serializzati, solo le proprieta' ... che se private hanno dei caratteri particolari a racchiudere il nome del parametro (variabile private), se public vengono serializzate come se fosse
    $array['pippo']
    mentre se protected vengono serializzate con un * all' interno dei cartatteri speciali per le private ... i metodi non vengono mai serializzati, come ho già detto

    Questo comporta che con la versione attuale della mia classe JavaScript se invii un oggetto serializzato, riesci, tramite javascript, a modificare sia i parametri pubblici che quelli privati o protected ( se la chiave con caratteri speciali viene accettat da JS, non ho testato questa casistica ).
    Il che vuol dire che ti ritrovi l'oggetto come se fosse un
    new Object();
    ['variabile'] = valore;
    ti modifichi quello che ti pare e lo puoi rispedire al PHP che ricnoscera' automaticamente quell' oggetto


    Originariamente inviato da daniele_dll
    ... e al contrario?
    non ne ho la più pallida idea

    se non dovesse riconoscerlo come variaible composta di parametri interni
    $object->pippo = $pluto;
    potrebbe essere necessario, in interazioni dedicate, aggiungere le classi al php.

    se tu sai che nel tuo JS userai ed invierai solo tipi compatibili con php, zero problemi, se vuoi inviare pero' un Object, in php credo tu debba avere una classe di questo tipo:

    class Object() {
    function toString(){ return ''; }
    // altre funzioni eventualmente utili presenti in JS
    }

    a quel punto passi classi ed oggetti senza problemi, ti sono stato di aiuto ?


    P.S. in questa versione la classe php la puoi chiamare come ti pare

    class DielleElle{}

    verra' inviata come oggetto di nome DielleElle e tornera' esattamente come oggetto DielleElle
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #70
    ho parlato solo di proprietà per questo motivo

    per l'andata, ovvero per l'invio a JS, se faccio si che la mia classe estenda l'oggetto XmlSerializer o JsSerializer che si basano sull'interfaccia Serializable e tutte e due le classi implementano i metodi necessari per la serializzazione/deserializzazione io posso trasportare i dati senza problemi senza scrivere codice particolare

    l'unica nota è che al momento della deserializzazione deve essere richiamato uno speciale metodo, tipo __wake, per, se serve, eseguire operazioni inerenti alla riattivazione dell'oggetto

    credo che questa sia, effettivamente, l'unica via percorribile

    antré ... implementa

    scherzi a parte ... oggi vedo se ci riesco a metter mano perché sarebbe MOLTO comodo ed utile
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.