File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / Zend / RFCs / 003.txt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:47:52 2012 UTC (12 years, 4 months ago) by misho
Branches: php, MAIN
CVS tags: v5_3_10, HEAD
php

    1: Title:           Loose type requirements for functions
    2: Version:         $Revision: 1.1.1.1 $
    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>