Tuesday, June 29, 2010

jAPI Direct - Direct call PHP methods from JavaScript

jAPI Direct contains PHP and JavaScript script that enables you to call PHP methods direct from JavaScript just by typing their names.

For example you can call PHP method that looks like this:

class MySimpleMath {

public function Addition($firstParam, $seccondParam) {
$sum = $firstParam+$seccondParam; echo $sum;
}
}
...from JavaScript just with:

MySimpleMath.Addition(1,2); And you will have as a result: "3"

So simple is in it? :)

--------------------------
jAPI Direct Implementation

To use jAPI in your project you will have to fallow a few steps only.

First download jAPI project source from this address.

Make sure that you included in your html page all scripts properly. You also have to include this two scripts in your html file: jAPI.js, jAPI-Remote.php.
jAPI-Remote.php actually can be any php script from which you want to use their server side methods.

You have to include jAPI-Core.php script in this file (jAPI-Remote.php) by adding this line of code at the beggining of your script:

include("httpHandler/jAPI-CORE.php");

And at the end of your script you will have to create a new instance of jAPI Base Class like this:

//all classes names comma separated as jAPIBaseClass parameter which you want to use

new jAPIBaseClass('YourClass,AnotherClass');

So, that's it! :)

If you have any question, feel free to ask.
vladica.savic@gmail.com

Cheers

Saturday, June 19, 2010

Ext Direct Tutorial

Pozdrav nakon dužeg vremena opet, i da nastavimo sa još nekim zanimljivim i korisnim stvarcicama vezanim za ExtJS.

Jedna od veoma korisnih stvari koju cu pokušati da približim citaocima koji su zalutali ovde je takozvani Ext Direct.

Šta je Ext Direct i cemu služi?

Ext Direct je možemo reci platforma koja omogucava direktno pozivanje server side metoda sa klijentske strane.
Postoje odgovarajuci API-i za implementiranje ove platforme za veliki broj programskih jezika kao što su:
PHP, .NET, Java, Ruby, i drugi. Ja licno imam iskustva u radu sa Ext Direct-om u kombinaciji sa PHP-om i .NET-om, ali verujem da sve funkcioniše poprilicno ok i za druge programske jezike.

Ono što je zajednicko za server side koji koristi ovu platformu je da korisnik treba da uradi sledece:
- Da konfiguriše koja ce "komponenta" (koji server side deo) biti dostupna sa klijentske strane.
- Da integriše odgovarajuci API.
- Da konfiguriše odgovarajuci takozvani ruter, tj. deo koji ce biti zadužen za preusmeravanje "zahteva" od klijentske strane ka odgovarajucim serverskim metodama.

Šta nam je potrebno da bi mogli da koristimo Ext Direct?
Da ne bi odstupali od prethodnog dela tutorijala, i ovaj put cemo se za serverski deo oslanjati na PHP. Ext Direct Api za PHP ciji je inace autor João Bruni, ExtDirectApp.php skripta se može naci ovde.

Takodje, povezivanje sa ExtDirect API-jem u ovom slucaju uradjeno je preko skripte app.js koja izgleda ovako:
Code:

Ext.namespace( 'Ext.DirectTurorial' );

//Podesavanje API-a
Ext.DirectTurorial.REMOTING_API = {
'url': 'app.php',
'type': 'remoting',
'actions': { 'MojaBaseKlasa': [%actions%] }
};

Ext.Direct.addProvider( Ext.DirectTurorial.REMOTING_API );

Ext.Direct.on( 'exception', function(e) { alert( 'Greska: ' + e.message ) } );

//Direktan poziv PHP metode i hvatanje odgovora sa servera!
MojaBaseKlasa.VratiNekiResponce( function(result){ alert( result ); } );


index.html stranica bi trebalo da izgleda ovako
Code:

<html>
<head>
<title>Ext.Direct PRIMER</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="app.php"></script>
</head>
<body>
<h1>Ext Direct tutorijal.</h1>
</body>
</html>


Primecujete da na kraju u html fajlu ukljucujemo kao javascript php fajl, i verovatno se pitate zašto je to tako.
Odgovor je zato što nam on služi kao ruter svih zahteva koji ce dolaziti na server i koji ce vracati odgovarajuci responce.

Naj jednostavniji primer može izgledati ovako (app.php):
Code:

<?php
require 'ExtDirectApp.php';

class MojaBaseKlasa extends ExtDirectActions
{
public function VratiNekiResponce()
{
return "Pozdrav svima koji ste zalutali ovde! Ovo je odgovor sa servera!";
}
}

new ExtDirectController( 'MojaBaseKlasa' );
?>

Dakle, u ovom delu koda, mi ukljucujemo ExtDirect Api i klasu cije funkcije želimo da pozivamo, "proširujemo" sa ExtDirectActions klasom, i pravimo Ext Direct Contoler objekat cijem konstruktoru prosledjujemo kao parametar naziv klase iz koje želimo da sa klijentske strane pozivamo serverske metode.


Koje su prednosti?
Prednosti su ocigledne, što se tice programera, na njemu je da lepo organizuje kod, i bez problema da štedi kod i prste, a da dobije na produktivnosti.

Koje su mane?
Iskreno, ja nisam naišao na nešto što bi mi preterano zasmetalo, tako da ostajete uskraceni za ovaj odgovor.

Pozdrav