]> granicus.if.org Git - php/commitdiff
adding RFC for loose type requirements for functions
authorBrian Moon <brianlmoon@php.net>
Mon, 17 Sep 2001 16:01:20 +0000 (16:01 +0000)
committerBrian Moon <brianlmoon@php.net>
Mon, 17 Sep 2001 16:01:20 +0000 (16:01 +0000)
Zend/RFCs/003.txt [new file with mode: 0644]

diff --git a/Zend/RFCs/003.txt b/Zend/RFCs/003.txt
new file mode 100644 (file)
index 0000000..aa90691
--- /dev/null
@@ -0,0 +1,72 @@
+Title:           Loose type requirements for functions
+Version:         $Revision$
+Status:          draft
+Maintainer:      Brian Moon <brianm@dealnews.com>
+Created:         2001-09-17
+Modified:        2001-09-17
+
+
+1. Background/Need
+==================
+
+Many internal function of PHP will reject parameters because of their
+type (the array and variable function come to mind).  For userland
+this is not an easy task as there is no uniform way to do it.  An
+addition to the engine for requiring loose types would allow
+delevopers to know that the data passed to their functions is of the
+correct type and reduce the need for duplicating the same code in
+every function to check for the type of data.
+
+
+2. Overview
+===========
+
+Loose typing mostly means evaluating the contents of the variable and
+not the type of the variable itself.  The requirements for this would
+and should work much like several of the is_* functions do now.
+
+The typing of parameters would be optional and those not typed would
+simply continue to be treated as they are now.
+
+3. Functionality
+================
+
+3.1. Allowed Types
+==================
+
+Only loose types should be needed to ensure the data is usable by the
+function.  Duplicating the functionallity of is_scalar, is_resource,
+is_array and is_object should give developers all the information they
+need to use a variable correctly.
+
+3.2. Syntax
+===========
+
+The current function syntax should be expanded to allow typing of
+variables inline in a C style.
+
+function foo ($var){
+}
+
+could be changed to require an array such as:
+
+function foo (array $var){
+}
+
+3.3. Errors
+===========
+
+Mis-matches in type should be reported as fatal errors and should halt
+the execution of a script as that function can not be run and code
+following could not reliably run.
+
+
+4. Compatibility Notes
+======================
+
+Old code that does not take advantage of this will run without
+modifications.
+
+
+
+