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

2016-01-29 12:56 8 1 收藏

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

【 tulaoshi.com - PHP 】

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

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

 <?php

/**
 * SOAP Service class to manage the books table
 *
 * @author John Coggeshall <john@zend.com
 *
 * @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() . ")");
  }
 }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

 /**
  * 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

来源:http://www.tulaoshi.com/n/20160129/1488205.html

延伸阅读
    在Oracle 9i中可以方便的把数据导出为文件,或者从文件导入。通过Oracle的管理服务器(Oracle Management Server,OMS)可以方便的实现,整个操作过程中有很多地方需要解释说明,但是完整的指导资料不多。各大论坛上很多所谓的高手,对该主题的回答往往是,高手是不用OMS的,用exp/impl吧。如果你执意追问,他多半会告诉你...
标签: PHP
四、基于XML_RPC的Web服务 利用XML_RPC构造和使用服务是很方便的。企业为自己提供的各种服务部署XML_RPC服务器,用户、客户软件和客户企业就可以使用这种服务构造出高端服务或者面向最终用户的应用。这种提供更有效、廉价和优质服务的竞争将极大地提高应用服务的质量。 但这里还存在一些问题有待解决,例如怎样编目、索引...
标签: Web开发
  未来的Web将是以服务为中心的Web,XML_RPC标准使得编写和应用服务变得非常简单。本文介绍XML_RPC标准及其PHP实现,并通过实例示范了如何在PHP中开发XML_RPC服务和客户程序。 一、服务式Web 从内容提供商所采用的简单方法到UDDI(Universal Description,Discovery and Integration)的未来构想,业界已经有大量关于“服务式Web”的...
标签: Web开发
  四、基于XML_RPC的Web服务 利用XML_RPC构造和使用服务是很方便的。企业为自己提供的各种服务部署XML_RPC服务器,用户、客户软件和客户企业就可以使用这种服务构造出高端服务或者面向最终用户的应用。这种提供更有效、廉价和优质服务的竞争将极大地提高应用服务的质量。 但这里还存在一些问题有待解决,例如怎样编目、索引、搜索Web...
标签: PHP
未来的Web将是以服务为中心的Web,XML_RPC标准使得编写和应用服务变得非常简单。本文介绍XML_RPC标准及其PHP实现,并通过实例示范了如何在PHP中开发XML_RPC服务和客户程序。 一、服务式Web 从内容提供商所采用的简单方法到UDDI(Universal Description,Discovery and Integration)的未来构想,业界已经有大量关于服务...

经验教程

53

收藏

83
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部