当前位置: 首页 > 图文教程 > 网络编程 > PHP > 连载3:利用PHP创建由Oracle驱动的SOAP服务

PHP
随时给自己贴的图片加文字的php代码
一个可分页的基于文本的PHP留言板源码
一个简单的PHP投票程序源码
一个模仿oso的php论坛程序(之一)
一个模仿oso的php论坛程序源码(之二)
一个模仿oso的php论坛程序源码(之三)
dedecms 制作模板中使用的全局标记图文教程
一个简单的PHP&MYSQL留言板源码
PHP实现多服务器session共享之NFS共享的方法
随时给自己贴的图片加文字的php水印
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
火车头采集器3.0采集图文教程
用PHP生成静态HTML速度快类库
Discuz!插件:自动隐藏帖子
php中判断一个字符串包含另一个字符串的方法
dedecms后台验证码总提示错误的解决方法
加速XP搜索功能堪比vista
人尽可用的Windows技巧小贴士之下篇
PHP+Ajax 网站SEO查询工具 提供代码
用PHP实现的生成静态HTML速度快类库

连载3:利用PHP创建由Oracle驱动的SOAP服务


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 82 ::
收藏到网摘: n/a

《连载1:利用PHP创建由Oracle驱动的SOAP服务》

《连载2:利用PHP创建由Oracle 驱动的SOAP 服务》

为便于参考,下面是一个完整的 BookManager 类,以及使用该类公开 SOAP 服务的相应服务器脚本。

 <?php

/**
 * SOAP Service class to manage the books table
 *
 * @author John Coggeshall <[email protected]>
 *
 * @throws SoapFault
 */
class BookManager {
 
 private $objDB;

 const DB_USERNAME="demo";
 const DB_PASSWORD="password";
 const DB_DATABASE="myoracle";
 
 /**
  * Object Constructor: Establishes DB connection
  *
  */
 function __construct() {
  
  $this->objDB = oci_connect(self::DB_USERNAME,
                             self::DB_PASSWORD,
                             self::DB_DATABASE);
      
  if($this->objDB === false) {
   throw new SoapFault(-1, "Failed to connect to database backend (reason: " .
                                         oci_error() . ")");
  }
 }

 /**
  * Private method to return the DB connection and make sure it exists
  *
  * @return unknown
  */
 private function getDB() {
  if(!$this->objDB) {
   throw new SoapFault(-1, "No valid database connection");
  }
  
  return $this->objDB;
 }
 
 /**
  * Add a new book to the database
  *
  * @param string $isbn The ISBN serial number for the book (32 char max)
  * @param string $author The name of the primary author (50 char max)
  * @param string $title The title of the book (50 char max)
  * @param float $price The price of the book in USD
  *
  * @return mixed SOAP Fault on error, true on success
  */
 public function addBook($isbn, $author, $title, $price) {

  $query = "INSERT INTO books (isbn, author, title, price)
                 VALUES (:isbn, :author, :title, :price)";
  
  $stmt = oci_parse($this->getDB(), $query);
  
  if(!$stmt) {
   throw new SoapFault(-1, "Failed to prepare query (reason: "  .
                                         oci_error($stmt) . ")");
  }
  
  // The numbers 32, 50, 50 are the max column lengths
  oci_bind_by_name($stmt, "isbn", $isbn, 32);
  oci_bind_by_name($stmt, "author", $author, 50);
  oci_bind_by_name($stmt, "title", $title, 50);
  oci_bind_by_name($stmt, "price", $price);
  
  if(!oci_execute($stmt)) {
   oci_rollback($this->getDB());
   throw new SoapFault(-1, "Failed to execute query (reason: " .
                                     &nbs