]> granicus.if.org Git - php/commitdiff
@Introduced PECL - PHP Extension and Code Library (prounounced "picke")
authorStig Bakken <ssb@php.net>
Mon, 22 Nov 1999 11:00:53 +0000 (11:00 +0000)
committerStig Bakken <ssb@php.net>
Mon, 22 Nov 1999 11:00:53 +0000 (11:00 +0000)
Introduced PECL - PHP Extension and Code Library (prounounced "picke"), in
the "pecl" subdir.  "make install" will now install the database abstraction
layer in PREFIX/lib/php.
I hereby dedicate this part of PHP to my daughter-of-yesterday Malin. :-)

Makefile.am
build.mk
configure.in
pear/DB.php [new file with mode: 0644]
pear/Makefile.am [new file with mode: 0644]
pear/README [new file with mode: 0644]

index d57126e23641c74574a75562635e137161a04315..a5e10f4299abd0a69f06925178469c6845ea5317 100644 (file)
@@ -1,7 +1,7 @@
 AUTOMAKE_OPTIONS = foreign
 
 ZEND_DIR = $(srcdir)/libzend
-SUBDIRS = libzend ext sapi $(TSRM_DIR) $(REGEX_DIR)
+SUBDIRS = libzend ext sapi $(TSRM_DIR) $(REGEX_DIR) . pecl
 
 BUILDLDFLAGS = $(EXTRA_LDFLAGS) $(LDFLAGS)
 
@@ -21,9 +21,9 @@ libphp4_la_DEPENDENCIES = \
                $(TSRM_LIB)
 
 libphp4_la_LIBADD = $(libphp4_la_DEPENDENCIES) $(EXTRA_LIBS)
-       
+
 libphp4_la_LDFLAGS = $(BUILDLDFLAGS) $(PHP_RPATHS)             
-       
+
 configuration-parser.h configuration-parser.c: configuration-parser.y
        $(YACC) -p cfg -v -d $< -o configuration-parser.c
 
index 69c52cee2c2144090ddea823dd89573e691d3ac2..b2bddd2ac308b94f443d7b6bd1012addf9a1f1b7 100644 (file)
--- a/build.mk
+++ b/build.mk
@@ -15,7 +15,7 @@ LT_TARGETS = ltconfig ltmain.sh config.guess config.sub
 
 SUBDIRS = libzend TSRM
 
-makefile_am_files = Makefile.am $(shell find ext sapi regex -name Makefile.am)
+makefile_am_files = Makefile.am $(shell find ext sapi regex pecl -name Makefile.am)
 makefile_in_files = $(makefile_am_files:.am=.in)
 makefile_files    = $(makefile_am_files:e.am=e)
 
index f9782e9c98c408db03cb5f1030c9da50fb5f790c..22de9d34527f2190c3f65bcc4e462b27a1166d22 100644 (file)
@@ -689,7 +689,8 @@ AC_SUBST(PHP_SAPI)
 AC_SUBST(INSTALL_IT)
 
 #libphp4.module 
-AC_OUTPUT([Makefile php4.spec ext/Makefile sapi/Makefile $PHP_OUTPUT_FILES
+AC_OUTPUT([Makefile php4.spec ext/Makefile sapi/Makefile pecl/Makefile
+           $PHP_OUTPUT_FILES
            scripts/mkextlib regex/Makefile build-defs.h], [], [
 
 if test ! -f $srcdir/ext/bcmath/number.c; then
diff --git a/pear/DB.php b/pear/DB.php
new file mode 100644 (file)
index 0000000..cab6b7a
--- /dev/null
@@ -0,0 +1,190 @@
+<?php
+//
+// +----------------------------------------------------------------------+
+// | PHP version 4.0                                                      |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997, 1998, 1999 The PHP Group                         |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.0 of the PHP license,       |
+// | that is bundled with this package in the file LICENSE, and is        |
+// | available at through the world-wide-web at                           |
+// | http://www.php.net/license/2_0.txt.                                  |
+// | If you did not receive a copy of the PHP license and are unable to   |
+// | obtain it through the world-wide-web, please send a note to          |
+// | license@php.net so we can mail you a copy immediately.               |
+// +----------------------------------------------------------------------+
+// | Authors: Stig Bakken <ssb@fast.no>                                   |
+// |                                                                      |
+// +----------------------------------------------------------------------+
+//
+// Database independent query interface.
+//
+
+// {{{ Database independent error codes.
+
+define("DB_OK",                     0);
+define("DB_ERROR",                 -1);
+define("DB_ERROR_SYNTAX",          -2);
+define("DB_ERROR_CONSTRAINT",      -3);
+define("DB_ERROR_NOT_FOUND",       -4);
+define("DB_ERROR_ALREADY_EXISTS",  -5);
+define("DB_ERROR_UNSUPPORTED",     -6);
+define("DB_ERROR_MISMATCH",        -7);
+define("DB_ERROR_INVALID",         -8);
+define("DB_ERROR_NOT_CAPABLE",     -9);
+define("DB_ERROR_TRUNCATED",      -10);
+define("DB_ERROR_INVALID_NUMBER", -11);
+define("DB_ERROR_INVALID_DATE",   -12);
+define("DB_ERROR_DIVZERO",        -13);
+
+// }}}
+// {{{ Prepare/execute parameter types
+
+define("DB_PARAM_SCALAR",           1);
+define("DB_PARAM_OPAQUE",           2);
+
+// }}}
+// {{{ Binary data modes
+
+define("DB_BINMODE_PASSTHRU",       1);
+define("DB_BINMODE_RETURN",         2);
+define("DB_BINMODE_CONVERT",        3);
+
+// }}}
+
+// {{{ class DB
+
+/**
+ * This class implements a factory method for creating DB objects,
+ * as well as some "static methods".
+ *
+ * @version  100
+ * @author   Stig Bakken <ssb@fast.no>
+ * @since    4.0b4
+ */
+class DB {
+       /**
+        * Create a new DB object for the specified database type.
+        * @param   $type   database type
+        * @return  object  a newly created DB object, or false on error
+        */
+    function factory($type) {
+               global $USED_PACKAGES;
+               // "include" should be replaced with "use" once PHP gets it
+               $pkgname = 'DB/' . $type;
+               if (!is_array($USED_PACKAGES) || !$USED_PACKAGES[$pkgname]) {
+                       if (!@include("DB/${type}.php")) {
+                               return DB_ERROR_NOT_FOUND;
+                       } else {
+                               $USED_PACKAGES[$pkgname] = true;
+                       }
+               }
+               $classname = 'DB_' . $type;
+               $obj = new $classname;
+               return $obj;
+    }
+
+       /**
+        * Return the DB API version.
+        * @return  int     the DB API version number
+        */
+    function apiVersion() {
+               return 100;
+    }
+
+       /**
+        * Tell whether a result code from a DB method is an error.
+        * @param   $code   result code
+        * @return  bool    whether $code is an error
+        */
+       function isError($code) {
+               return is_int($code) && ($code < 0);
+       }
+
+       /**
+        * Return a textual error message for an error code.
+        * @param   $code   error code
+        * @return  string  error message
+        */
+       function errorMessage($code) {
+               if (!is_array($errorMessages)) {
+                       $errorMessages = array(
+                               DB_OK                   => "no error",
+                               DB_ERROR                => "unknown error",
+                               DB_ERROR_SYNTAX         => "syntax error",
+                               DB_ERROR_CONSTRAINT     => "constraint violation",
+                               DB_ERROR_NOT_FOUND      => "not found",
+                               DB_ERROR_ALREADY_EXISTS => "already exists",
+                               DB_ERROR_UNSUPPORTED    => "not supported",
+                               DB_ERROR_MISMATCH       => "mismatch",
+                               DB_ERROR_INVALID        => "invalid",
+                               DB_ERROR_NOT_CAPABLE    => "DB implementation not capable",
+                               DB_ERROR_INVALID_NUMBER => "invalid number",
+                               DB_ERROR_INVALID_DATE   => "invalid date or time",
+                               DB_ERROR_DIVZERO        => "division by zero"
+                       );
+               }
+               return $errorMessages[$code];
+       }
+}
+
+// }}}
+// {{{ class DB_result
+
+/**
+ * This class implements a wrapper for a DB result set.
+ * A new instance of this class will be returned by the DB implementation
+ * after processing a query that returns data.
+ */
+class DB_result {
+    var $dbh;
+    var $result;
+
+    /**
+        * DB_result constructor.
+        * @param   $dbh    DB object reference
+        * @param   $result result resource id
+        */
+    function DB_result($dbh, $result) {
+               $this->dbh = $dbh;
+               $this->result = $result;
+    }
+
+       /**
+        * Fetch and return a row of data.
+        * @return  array   a row of data, or false on error
+        */
+    function fetchRow() {
+               return $this->dbh->fetchRow($this->result);
+    }
+
+    /**
+        * Fetch a row of data into an existing array.
+        * @param   $arr    reference to data array
+        * @return  int     error code
+        */
+    function fetchInto(const $arr) {
+               return $this->dbh->fetchInto($this->result, &$arr);
+    }
+
+    /**
+        * Frees the resource for this result and reset ourselves.
+        * @return  int     error code
+        */
+    function free() {
+               $err = $this->dbh->freeResult($this->result);
+               if (DB::isError($err)) {
+                       return $err;
+               }
+               $this->dbh = $this->result = false;
+               return true;
+    }
+}
+
+// }}}
+
+// Local variables:
+// tab-width: 4
+// c-basic-offset: 4
+// End:
+?>
diff --git a/pear/Makefile.am b/pear/Makefile.am
new file mode 100644 (file)
index 0000000..2dd988a
--- /dev/null
@@ -0,0 +1,9 @@
+## Process this file with automake to produce Makefile.in
+
+pecldir=$(prefix)/lib/php
+pecl_DBdir=$(prefix)/lib/php/DB
+
+install-data-local:
+       $(mkinstalldirs) $(pecldir) $(pecl_DBdir)
+       $(INSTALL_DATA) $(srcdir)/DB.php $(pecldir)
+       $(INSTALL_DATA) $(srcdir)/DB/odbc.php $(pecl_DBdir)
diff --git a/pear/README b/pear/README
new file mode 100644 (file)
index 0000000..b8ca9c0
--- /dev/null
@@ -0,0 +1,29 @@
+     PECL (pronounced "pickle") - PHP Extension and Code Library
+     -----------------------------------------------------------
+
+WHAT IS PECL?
+
+PECL is a code repository for PHP extensions and PHP library code
+similar to TeX's CTAN and Perl's CPAN.
+
+The intention behind PECL is to provide a means for library code
+authors to organize their code in a defined way shared by other
+developers, and to give the PHP community a single source for such
+code.
+
+
+ADMINISTRATION
+
+This section will describe the rules for how files are structured and
+how functions and classes should be named.
+
+
+TOOLS
+
+This section will describe the tools provided to PECL users.
+
+
+CODING RULES AND GUIDELINES
+
+* All PHP code _must_ use <?php ?>.  <? ?> and other formats are not
+  portable.