123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- Title: Loose type requirements for functions
- Version: $Id$
- Status: draft
- Maintainer: Brian Moon <brianm@dealnews.com>
- Created: 2001-09-17
- Modified: 2001-09-17
- 1. Background/Need
- ==================
- Many internal functions 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
- developers to know that the data passed to their functions are 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 cannot 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.
|