Using The Google Web APIs With PHP - Alternatives
(Page 8 of 9 )
It's also possible to write equivalent code using the PEAR SOAP client, rather than the NuSOAP client. The procedure remains largely identical, though there is obviously a difference in the API used. As an illustration, consider the following code segment, which rewrites how the primitive search engine demonstrated a few pages back using the PEAR class:
<html>
<head><basefont face="Arial"></head>
<body>
<?php
if (!$_POST['q'])
{
?>
<h2>Search</h2>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
Search term: <input type="text" name="q">
</form>
<?
}
else
{
// include the class
include("SOAP/Client.php");
// create a instance of the SOAP client object
$soapclient = new
SOAP_Client('http://api.google.com/search/beta2');
// set up an array containing input parameters to be
// passed to the remote procedure
$params = array(
'key' => 'your-google-license-key-xxxxxxxx', // Google
license key
'q' => $_POST['q'], // search
term
'start' => 0, // start
from result n
'maxResults' => 10, // show a
total of n
results
'filter' => true, // remove
similar results
'restrict' => '', // restrict
by topic
'safeSearch' => true, // remove
adult links
'lr' => '', // restrict
by language
'ie' => '', // input
encoding
'oe' => '' // output
encoding
);
// invoke the method on the server
$result = $soapclient->call("doGoogleSearch", $params,
"urn:GoogleSearch");
// print the results of the search
if (PEAR::isError($result))
{
?>
<h2>Error</h2>
<? echo $result['faultstring'];?>
<?
}
else
{
?>
<h2>Search Results</h2>
<? echo $result['estimatedTotalResultsCount'] . " hits
found in " . $result['searchTime'] . " ms"; ?>
<ul>
<?
if (is_array($result['resultElements']))
{
foreach ($result['resultElements'] as $r)
{
echo "<li><a href=" . $r['URL'] . ">" .
$r['title'] . "</a>";
echo "<br>";
echo $r['snippet'] . "(" . $r['cachedSize'] .
")";
echo "<p>";
}
}
?>
</ul>
<?
}
}
?>
</body>
</html>
This is very similar to what you've just seen - not
surprising, considering that the PEAR SOAP client is based largely on code taken from Dietrich Ayala's NuSOAP classes. And, in case you want even more convenience, take a look at the SOAP_Google class, also part of the PEAR CVS repository, which provides a set of wrapper functions designed specifically for PHP developers looking to use the Google Web APIs.
Here's a quick example of what a script using the SOAP_Google class might look like:
<html>
<head><basefont face="Arial"></head>
<body>
<?php
if (!$_POST['q'])
{
?>
<h2>Search</h2>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
Search term: <input type="text" name="q">
</form>
<?
}
else
{
// include the class
include("SOAP_Google.php");
// create a instance of the SOAP_Google client object
// pass the license key to the constructor
$google = new SOAP_Google('your-google-license-key-xxxxxxxx');
// invoke the search() method
$result = $google->search(array('query' => $_POST['q']));
// print the results of the search
if ($result)
{
?>
<h2>Search Results</h2>
<? echo $result['estimatedTotalResultsCount'] . " hits
found in " . $result['searchTime'] . " ms"; ?>
<ul>
<?
if (is_array($result['resultElements']))
{
foreach ($result['resultElements'] as $r)
{
echo "<li><a href=" . $r['URL'] . ">" .
$r['title'] . "</a>";
echo "<br>";
echo $r['snippet'] . "(" . $r['cachedSize'] .
")";
echo "<p>";
}
}
?>
</ul>
<?
}
else
{
echo "<h2>Error</h2>";
}
}
?>
</body>
</html>
Next: Closing Time >>
More PHP Articles
More By Harish Kamath, (c) Melonfire