Annotation of embedaddon/php/Zend/RFCs/003.txt, revision 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>