è descritto nei bugfix, PHP4 non prende informazioni run-time case-sensitive, quindi se tu hai una classe con metodo encodeString , prendi i metodi della classe in php, questo verrà restituito come "encodestring" ed in javascript avrai service.encodestring, che non potrai lostesso riutilizzare perchè in php il metodo encodestring della classe non esisteràOriginariamente inviato da Ndr
"service.encodeString is not a function"
(fagianate reali del PHP 4, un meticcio tra case-sensitive e non ... )
In PHP 5 quindi non avrai alcun problema con quell'esempio, mentre per il 4 ho implementato sulla gateway un controllo in più, volendo utile anche per la versione 5.
Tale controllo si basa su un metodo dedicato della classe da utilizzare:
AJSHP_SCHEMA
questo metodo deve far tornare un array di stringhe rappresentanti i nomi dei metodi che si vogliono poter utilizzare anche in javascript.
questa dovrebbe andare senza problemi, sia su PHP4 che 5 che 6codice:class MyFirstAJSHP { function AJSHP_SCHEMA() { return array("encodeString"); } function encodeString($str, $times) { if(!is_int($times) || (int)$times <= 0) $times = 1; return str_repeat(base64_encode($str), (int)$times); } }
speravo di poter automatizzare il tutto ma:
1 - anche in AMFPHP è necessario dichiarare la tabella dei metodi da poter usare, quindi tutto sommato così AJSHP è anche più coerente come progetto alternativo
2 - in questo modo, anche in PHP5, puoi scegliere di far usare a JS solo alcuni metodi e non tutti quelli pubblici, se vogliamo più sicuro o veloce
[edit]
3 - devo aggiornare la documentazione![]()




Rispondi quotando