mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
@Introduced PECL - PHP Extension and Code Library (prounounced "picke")
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. :-)
This commit is contained in:
parent
be6dde2639
commit
541087d17a
@ -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
|
||||
|
||||
|
2
build.mk
2
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)
|
||||
|
||||
|
@ -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
|
||||
|
190
pear/DB.php
Normal file
190
pear/DB.php
Normal file
@ -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:
|
||||
?>
|
9
pear/Makefile.am
Normal file
9
pear/Makefile.am
Normal file
@ -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)
|
29
pear/README
Normal file
29
pear/README
Normal file
@ -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.
|
Loading…
Reference in New Issue
Block a user