Enhancing PHP Programming with the ASP.NET AJAX Framework - Use PHP class to define web service
(Page 4 of 4 )
First, we should define a typical PHP class, named Animal, that bears the responsibility of serving as the OOP wrapper for the server side data in database form. However, for simplicity, we have not introduced the database (typically MySQL) related stuff. Here is the complete definition of the class,Animal (the file is Animal.php).
// class Animal
class Animal
{
//define a static array to hold data
static $data = array();
public $Name;
public $Category;
public $Color;
//constructor
public function __construct()
{
@list(
$this->Name,
$this->Category,
$this->Color) = func_get_args();
}
//the main method to return animal related data
public function GetAllAnimals()
{
if (count(Animal::$data) == 0)
{
//populate data into the array in hardcode mode
Animal::$data[] = new Animal("Felix", "Cat", "Grey");
Animal::$data[] = new Animal("Fido", "Dog", "Brown");
Animal::$data[] = new Animal("Rover", "Dog", "Brown");
Animal::$data[] = new Animal("Daisy", "Cow", "Black and White");
Animal::$data[] = new Animal("Polly", "Parrot", "Green");
}
return Animal::$data;
}
}
Since the above PHP class is simple, and what really matters does not lie herein, let's continue to delve into the PHP simulated web service class.
For convenient discussion, we listed all the source code for the AnimalService class, as is shown below (the file is AnimalService.php).
<?php
require_once 'MSAjaxService.php';
require_once 'Animal.php';
class AnimalService extends MSAjaxService
{
function GetAllAnimals()
{
return Animal::GetAllAnimals();
}
}
$service = new AnimalService();
$service->ProcessRequest(array('Animal') );
?>
We must refer to MSAjaxService.php because there is a class defined as MSAjaxService, which, in turn, invokes another class, called MSAjaxProxyGenerator (defined in the file as MSAjaxProxyGenerator.php), to finally generate the client-side web service proxy.
Next, we must derive "AnimalService" from the base class, MSAjaxService. This is a must have in all similar conditions. Then, for brevity, we have defined a web method, called GetAllAnimals(). This invokes "Animal's" method, which is called GetAllAnimals(), and this returns an array of the Animal object.
In the last part, we created an instance of theAnimalService web service and assigned it to the $service variable. After invoking the ProcessRequest() method of the instance and passing the seemingly peculiar array, Animal, as the only parameter, all the server side work is done.
As you may have doped out, the secret is behind the ProcessRequest() method of the MSAjaxService class. This method bears many responsibilities, such as generating related client proxy, calling the json_decode() method to decode the posted data from the client side, calling the json_encode() method to encode the initial data in json mode so it can be transferred to the client side, etc.
So, interested readers may do further research into the MSAjaxService.php file to track down more detailed information.
In the next article, we'll switch to the client-side related programming.
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |