Annotation of embedaddon/php/Zend/RFCs/003.txt, revision 1.1.1.1
1.1 misho 1: Title: Loose type requirements for functions
2: Version: $Revision: 57685 $
3: Status: draft
4: Maintainer: Brian Moon <brianm@dealnews.com>
5: Created: 2001-09-17
6: Modified: 2001-09-17
7:
8:
9: 1. Background/Need
10: ==================
11:
12: Many internal function of PHP will reject parameters because of their
13: type (the array and variable function come to mind). For userland
14: this is not an easy task as there is no uniform way to do it. An
15: addition to the engine for requiring loose types would allow
16: delevopers to know that the data passed to their functions is of the
17: correct type and reduce the need for duplicating the same code in
18: every function to check for the type of data.
19:
20:
21: 2. Overview
22: ===========
23:
24: Loose typing mostly means evaluating the contents of the variable and
25: not the type of the variable itself. The requirements for this would
26: and should work much like several of the is_* functions do now.
27:
28: The typing of parameters would be optional and those not typed would
29: simply continue to be treated as they are now.
30:
31: 3. Functionality
32: ================
33:
34: 3.1. Allowed Types
35: ==================
36:
37: Only loose types should be needed to ensure the data is usable by the
38: function. Duplicating the functionallity of is_scalar, is_resource,
39: is_array and is_object should give developers all the information they
40: need to use a variable correctly.
41:
42: 3.2. Syntax
43: ===========
44:
45: The current function syntax should be expanded to allow typing of
46: variables inline in a C style.
47:
48: function foo ($var){
49: }
50:
51: could be changed to require an array such as:
52:
53: function foo (array $var){
54: }
55:
56: 3.3. Errors
57: ===========
58:
59: Mis-matches in type should be reported as fatal errors and should halt
60: the execution of a script as that function can not be run and code
61: following could not reliably run.
62:
63:
64: 4. Compatibility Notes
65: ======================
66:
67: Old code that does not take advantage of this will run without
68: modifications.
69:
70:
71:
72:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>