helly Mon Nov 1 10:50:26 2004 EDT
Added files:
/php-src/ext/spl spl_exceptions.c spl_exceptions.h
Modified files:
/php-src/ext/spl config.m4 config.w32 php_spl.c spl.php
Log:
- Implement basic exception classes
http://cvs.php.net/diff.php/php-src/ext/spl/config.m4?r1=1.11&r2=1.12&ty=u
Index: php-src/ext/spl/config.m4
diff -u php-src/ext/spl/config.m4:1.11 php-src/ext/spl/config.m4:1.12
--- php-src/ext/spl/config.m4:1.11 Sun Jul 18 08:03:51 2004
+++ php-src/ext/spl/config.m4 Mon Nov 1 10:50:25 2004
@@ -1,4 +1,4 @@
-dnl $Id: config.m4,v 1.11 2004/07/18 12:03:51 wez Exp $
+dnl $Id: config.m4,v 1.12 2004/11/01 15:50:25 helly Exp $
dnl config.m4 for extension SPL
PHP_ARG_ENABLE(spl, enable SPL suppport,
@@ -9,6 +9,6 @@
AC_MSG_ERROR(Cannot build SPL as a shared module)
fi
AC_DEFINE(HAVE_SPL, 1, [Whether you want SPL (Standard PHP Library) support])
- PHP_NEW_EXTENSION(spl, php_spl.c spl_functions.c spl_engine.c spl_iterators.c
spl_array.c spl_directory.c spl_sxe.c, $ext_shared)
+ PHP_NEW_EXTENSION(spl, php_spl.c spl_functions.c spl_engine.c spl_iterators.c
spl_array.c spl_directory.c spl_sxe.c spl_exceptions.c, $ext_shared)
PHP_ADD_EXTENSION_DEP(spl, simplexml)
fi
http://cvs.php.net/diff.php/php-src/ext/spl/config.w32?r1=1.5&r2=1.6&ty=u
Index: php-src/ext/spl/config.w32
diff -u php-src/ext/spl/config.w32:1.5 php-src/ext/spl/config.w32:1.6
--- php-src/ext/spl/config.w32:1.5 Tue Jan 20 14:49:21 2004
+++ php-src/ext/spl/config.w32 Mon Nov 1 10:50:25 2004
@@ -1,4 +1,4 @@
-// $Id: config.w32,v 1.5 2004/01/20 19:49:21 helly Exp $
+// $Id: config.w32,v 1.6 2004/11/01 15:50:25 helly Exp $
// vim:ft=javascript
ARG_ENABLE("spl", "SPL (Standard PHP Library) support", "yes");
@@ -7,6 +7,6 @@
if (PHP_SPL_SHARED) {
ERROR("SPL cannot be compiled as a shared ext");
}
- EXTENSION("spl", "php_spl.c spl_functions.c spl_engine.c spl_iterators.c
spl_array.c spl_directory.c spl_sxe.c");
+ EXTENSION("spl", "php_spl.c spl_functions.c spl_engine.c spl_iterators.c
spl_array.c spl_directory.c spl_sxe.c spl_exceptions.c");
AC_DEFINE('HAVE_SPL', 1);
}
http://cvs.php.net/diff.php/php-src/ext/spl/php_spl.c?r1=1.35&r2=1.36&ty=u
Index: php-src/ext/spl/php_spl.c
diff -u php-src/ext/spl/php_spl.c:1.35 php-src/ext/spl/php_spl.c:1.36
--- php-src/ext/spl/php_spl.c:1.35 Mon Nov 1 05:45:53 2004
+++ php-src/ext/spl/php_spl.c Mon Nov 1 10:50:25 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_spl.c,v 1.35 2004/11/01 10:45:53 helly Exp $ */
+/* $Id: php_spl.c,v 1.36 2004/11/01 15:50:25 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -32,6 +32,7 @@
#include "spl_directory.h"
#include "spl_iterators.h"
#include "spl_sxe.h"
+#include "spl_exceptions.h"
#ifdef COMPILE_DL_SPL
ZEND_GET_MODULE(spl)
@@ -93,6 +94,7 @@
PHP_MINIT(spl_array)(INIT_FUNC_ARGS_PASSTHRU);
PHP_MINIT(spl_directory)(INIT_FUNC_ARGS_PASSTHRU);
PHP_MINIT(spl_sxe)(INIT_FUNC_ARGS_PASSTHRU);
+ PHP_MINIT(spl_exceptions)(INIT_FUNC_ARGS_PASSTHRU);
return SUCCESS;
}
@@ -168,19 +170,29 @@
SPL_ADD_CLASS(CachingRecursiveIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(Countable, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(DirectoryIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(DomainException, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(EmptyIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(FilterIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(InfiniteIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(InvalidArgumentException, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(IteratorIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(LengthException, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(LimitIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(LogicException, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(NoRewindIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(OuterIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(OutOfRangeException, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(OutOfBoundsException, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(OverflowException, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(ParentIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(RangeException, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(RecursiveDirectoryIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(RecursiveIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(RecursiveIteratorIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(RuntimeException, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(SeekableIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(SimpleXMLIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(UnderflowException, z_list, sub, allow, ce_flags); \
/* {{{ spl_classes */
PHP_FUNCTION(spl_classes)
http://cvs.php.net/diff.php/php-src/ext/spl/spl.php?r1=1.33&r2=1.34&ty=u
Index: php-src/ext/spl/spl.php
diff -u php-src/ext/spl/spl.php:1.33 php-src/ext/spl/spl.php:1.34
--- php-src/ext/spl/spl.php:1.33 Mon Nov 1 05:45:53 2004
+++ php-src/ext/spl/spl.php Mon Nov 1 10:50:25 2004
@@ -13,26 +13,186 @@
*
* SPL - Standard PHP Library
*
+ * SPL is a collection of interfaces and classes that are meant to solve
+ * standard problems.
+ *
+ * A nice article about it can be found
+ * <a href="http://www.sitepoint.com/article/php5-standard-library/1">here</a>.
+ *
* You can download this documentation as a chm file
* <a href="http://php.net/~helly/php/ext/spl/spl.chm">here</a>.
*
* (c) Marcus Boerger, 2003 - 2004
*/
-/** \defgroup SPL Internal classes
+/** @defgroup ZendEngine Zend engine classes
+ *
+ * The classes and interfaces in this group are contained in the c-code of
+ * PHP's Zend engine.
+ */
+
+/** @defgroup SPL Internal classes
*
* The classes and interfaces in this group are contained in the c-code of
* ext/SPL.
*/
-/** \defgroup Examples Example classes
+/** @defgroup Examples Example classes
*
* The classes and interfaces in this group are contained as PHP code in the
* examples subdirectory of ext/SPL. Sooner or later they will be moved to
* c-code.
*/
-/** \ingroup SPL
+/** @ingroup ZendEngine
+ * @brief Basic Exception class.
+ */
+class Exception
+{
+ /** The exception message */
+ protected $message;
+
+ /** The string represenations as generated during construction */
+ private $string;
+
+ /** The code passed to the constructor */
+ protected $code;
+
+ /** The file name where the exception was instantiated */
+ protected $file;
+
+ /** The line number where the exception was instantiated */
+ protected $line;
+
+ /** The stack trace */
+ private $trace;
+
+ /** Prevent clone
+ */
+ final private function __clone();
+
+ /**
+ */
+ public function __construct($message, $code);
+
+ /** @return the message passed to the constructor
+ */
+ final public function getMessage();
+
+ /** @return the code passed to the constructor
+ */
+ final public function getCode();
+
+ /** @return the name of the file where the exception was thrown
+ */
+ final public function getFile();
+
+ /** @return the line number where the exception was thrown
+ */
+ final public function getLine();
+
+ /** @return the stack trace as array
+ */
+ final public function getTrace();
+
+ /** @return the stack trace as string
+ */
+ final public function getTraceAsString();
+
+ /** @return string represenation of exception
+ */
+ public function __toString();
+}
+
+/** @ingroup SPL
+ * @brief Exception that represents error in the program logic.
+ *
+ * This kind of exceptions should directly leed to a fix in your code.
+ */
+class LogicException extends Exception
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception that denotes a value not in the valid domain was used.
+ *
+ * This kind of exception should be used to inform about domain erors in
+ * mathematical sense.
+ */
+class DomainException extends LogicException
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception that denotes invalid arguments were passed.
+ */
+class InvalidArgumentException extends LogicException
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception thrown when a parameter exceeds the allowed length.
+ *
+ * This can be used for strings length, array size, file size, number of
+ * elements read from an Iterator and so on.
+ */
+class LengthException extends LogicException
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception thrown when an illegal index was requested.
+ *
+ * This represents errors that should be detected at compile time.
+ *
+ * @see OutOfBoundsException
+ */
+class OutOfRangeException extends LogicException
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception thrown for errors that are only detectable at runtime.
+ */
+class RuntimeException extends Exception
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception thrown when an illegal index was requested.
+ *
+ * This represents errors that cannot be detected at compile time.
+ *
+ * @see OutOfRangeException
+ */
+class OutOfBoundsException extends LogicException
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception thrown to indicate arithmetic/buffer overflow.
+ */
+class OverflowException extends RuntimeException
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception thrown to indicate range errors during program execution.
+ *
+ * Normally this means there was an arithmetic error other than under/overflow.
+ */
+class RangeException extends RuntimeException
+{
+}
+
+/** @ingroup SPL
+ * @brief Exception Exception thrown to indicate arithmetic/buffer underflow.
+ */
+class UnderflowException extends RuntimeException
+{
+}
+
+/** \ingroup ZendEngine
* \brief Interface to override array access of objects.
*/
interface ArrayAccess
@@ -57,7 +217,7 @@
function offsetExists($offset);
}
-/** \ingroup SPL
+/** \ingroup ZendEngine
* \brief Interface to detect a class is traversable using foreach.
*
* Abstract base interface that cannot be implemented alone. Instead it
@@ -75,7 +235,7 @@
{
}
-/** \ingroup SPL
+/** \ingroup ZendEngine
* \brief Interface to create an external Iterator.
*
* \note This is an engine internal interface.
@@ -87,7 +247,7 @@
function getIterator();
}
-/** \ingroup SPL
+/** \ingroup ZendEngine
* \brief Basic iterator
*
* Interface for external iterators or objects that can be iterated
http://cvs.php.net/co.php/php-src/ext/spl/spl_exceptions.c?r=1.1&p=1
Index: php-src/ext/spl/spl_exceptions.c
+++ php-src/ext/spl/spl_exceptions.c
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2004 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_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 |
| [EMAIL PROTECTED] so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Marcus Boerger <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
/* $Id: spl_exceptions.c,v 1.1 2004/11/01 15:50:25 helly Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "zend_interfaces.h"
#include "zend_exceptions.h"
#include "php_spl.h"
#include "spl_functions.h"
#include "spl_engine.h"
#include "spl_exceptions.h"
zend_class_entry *spl_ce_LogicException;
zend_class_entry *spl_ce_DomainException;
zend_class_entry *spl_ce_InvalidArgumentException;
zend_class_entry *spl_ce_LengthException;
zend_class_entry *spl_ce_OutOfRangeException;
zend_class_entry *spl_ce_RuntimeException;
zend_class_entry *spl_ce_OutOfBoundsException;
zend_class_entry *spl_ce_OverflowException;
zend_class_entry *spl_ce_RangeException;
zend_class_entry *spl_ce_UnderflowException;
#define spl_ce_Exception zend_exception_get_default()
/* {{{ PHP_MINIT_FUNCTION(spl_exceptions) */
PHP_MINIT_FUNCTION(spl_exceptions)
{
REGISTER_SPL_SUB_CLASS_EX(LogicException, Exception, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(DomainException, LogicException, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(InvalidArgumentException, LogicException, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(LengthException, LogicException, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(OutOfRangeException, LogicException, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(RuntimeException, Exception, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(OutOfBoundsException RuntimeException, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(OverflowException, RuntimeException, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(RangeException, RuntimeException, NULL, NULL);
REGISTER_SPL_SUB_CLASS_EX(UnderflowException, RuntimeException, NULL, NULL);
return SUCCESS;
}
/* }}} */
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: fdm=marker
* vim: noet sw=4 ts=4
*/
http://cvs.php.net/co.php/php-src/ext/spl/spl_exceptions.h?r=1.1&p=1
Index: php-src/ext/spl/spl_exceptions.h
+++ php-src/ext/spl/spl_exceptions.h
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2004 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_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 |
| [EMAIL PROTECTED] so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Marcus Boerger <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
/* $Id: spl_exceptions.h,v 1.1 2004/11/01 15:50:25 helly Exp $ */
#ifndef SPL_EXCEPTIONS_H
#define SPL_EXCEPTIONS_H
#include "php.h"
#include "php_spl.h"
extern zend_class_entry *spl_ce_LogicException;
extern zend_class_entry *spl_ce_DomainException;
extern zend_class_entry *spl_ce_InvalidArgumentException;
extern zend_class_entry *spl_ce_LengthException;
extern zend_class_entry *spl_ce_OutOfRangeException;
extern zend_class_entry *spl_ce_RuntimeException;
extern zend_class_entry *spl_ce_OutOfBoundsException;
extern zend_class_entry *spl_ce_OverflowException;
extern zend_class_entry *spl_ce_RangeException;
extern zend_class_entry *spl_ce_UnderflowException;
PHP_MINIT_FUNCTION(spl_exceptions);
#endif /* SPL_EXCEPTIONS_H */
/*
* Local Variables:
* c-basic-offset: 4
* tab-width: 4
* End:
* vim600: fdm=marker
* vim: noet sw=4 ts=4
*/
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php