WEB开发网
开发学院数据库Oracle 利用PHP创建由Oracle驱动的SOAP服务 阅读

利用PHP创建由Oracle驱动的SOAP服务

 2009-01-06 13:10:21 来源:WEB开发网   
核心提示: 创建BookManager 类现在,您已经熟悉了用 PHP 实施 SOAP 服务的所有内容,利用PHP创建由Oracle驱动的SOAP服务(6),下面我们来讨论数据库,出于本手册的需要, 为便于参考,下面是一个完整的 BookManager 类,我创建了一个名为 BookManager 的

创建BookManager 类

现在,您已经熟悉了用 PHP 实施 SOAP 服务的所有内容,下面我们来讨论数据库。出于本手册的需要,我创建了一个名为 BookManager 的类。该类的作用将与前面示例中的 math 类相同,除了要与数据库进行交互,并提供一个 SOAP 服务,以允许您执行一般维护并查询本教程开头描述的书籍表。具体而言,BookManager 类将实施以下要公开为 SOAP 调用的方法:

   addBook($isbn, $author, $title, $price); // Adds a Book to the database
  delBook($isbn); // Deletes a book by ISBN number
  findBookISBNByAuthor($author); // Returns an array of ISBN numbers of books written by a
  // specific author
  findBookISBNByTitle($title); // Returns an array of ISBN numbers of books whose title
  // matches the substring provided
  getBookByISBN($isbn); // Returns the details of the book identified by ISBN
  listAllBooks(); // Returns an array of all ISBN numbers in the database

尽管该类本身有其他几个方法,但只有上述六个方法是声明的公共方法(当然,除了构造函数以外),因而也是仅有的公开为 SOAP 服务的方法。虽然详细说明每个方法会超出本教程讨论范围(特别是它们在形式上基本相同),但出于完整性需要,我们来看一下 delBook() 方法:     /**
  * Delete a book from the database by ISBN
  *
  * @param string $isbn The ISBN serial number of the book to delete
  *
  * @return mixed SOAP Fault on error, true on success
  */
  public function delBook($isbn) {
  $query = "DELETE FROM books
  WHERE isbn = :isbn";
  $stmt = oci_parse($this->getDB(), $query);
  if(!$stmt) {
  throw new SoapFault(-1, "Failed to prepare query (reason: " .
  oci_error($stmt) . ")");
  }
  oci_bind_by_name($stmt, "isbn", $isbn, 32);
  if(!oci_execute($stmt)) {
  oci_rollback($this->getDB());
  throw new SoapFault(-1, "Failed to execute query (reason: " .
  oci_error($stmt) . ")");
  }
  oci_commit($this->getDB());
  return true;
  }

对于那些熟悉用于 PHP 的 Oracle API 的开发人员来说,上述方法应该很简单。对于其余开发人员来说,我们从 oci_parse() 方法开始来探究该函数的某些关键点。该方法以字符串的形式接受 SQL 查询(如果需要,在查询中包含每个变量的占位符),然后返回表示该查询的语句资源。在这里,该语句资源的占位符可以通过 oci_bind_by_name() 方法直接映射到 PHP 变量,该方法将接受语句、占位符名称、对应的 PHP 变量以及可选的当前最大列长度作为参数。一旦 PHP 将每个占位符绑定到一个 PHP 变量,就可以执行语句并获得结果了。当然,由于该操作是一个针对表的 write 操作,您可以通过将更改提交到数据库并返回成功状态,来成功完成函数执行。

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

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:利用 PHP 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接