Originariamente inviato da Ndr
"service.encodeString is not a function"
è 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à
(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.

codice:
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);
	}
}
questa dovrebbe andare senza problemi, sia su PHP4 che 5 che 6


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