rfc:autofunc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
rfc:autofunc [2011/08/05 00:45]
arpad Spelling, grammar
rfc:autofunc [2011/08/17 20:59]
tyrael replace the constants
Line 3: Line 3:
   * Date: 2011-08-05   * Date: 2011-08-05
   * Author: Ferenc Kovacs <tyra3l@gmail.com>   * Author: Ferenc Kovacs <tyra3l@gmail.com>
-  * Status: Draft+  * Status: Under Discussion
   * First Published at: https://wiki.php.net/rfc/autofunc   * First Published at: https://wiki.php.net/rfc/autofunc
  
Line 14: Line 14:
  
 The suggested change would be pretty straightforward and BC compatible: The suggested change would be pretty straightforward and BC compatible:
-  * Add a fourth optional parameter for spl_autoload_register called $types with the default value of T_CLASS (this would keep the BC), supported values would be any combination of T_CLASS and T_FUNCTION for now.+  * Add two new constants to spl: SPL_AUTOLOAD_CLASS, SPL_AUTOLOAD_FUNCTION.  
 +  * Add a fourth optional parameter for spl_autoload_register called $types with the default value of SPL_AUTOLOAD_CLASS (this would keep the BC), supported values would be any combination of SPL_AUTOLOAD_CLASS and SPL_AUTOLOAD_FUNCTION for now.
     * As you would guess, this would work the same way as the $error_types parameter works for set_error_handler: you can specify for which type(s) of missing tokens the autoloader should be called.     * As you would guess, this would work the same way as the $error_types parameter works for set_error_handler: you can specify for which type(s) of missing tokens the autoloader should be called.
   * The type for the missing token should also be passed to the $autoload_function callback as a second param.   * The type for the missing token should also be passed to the $autoload_function callback as a second param.
     * This is needed to be able to handle multiple types of tokens with a common callback.     * This is needed to be able to handle multiple types of tokens with a common callback.
     * Note that passing more parameters to a function than it has in its definition is valid, this would also be a backward compatible change.     * Note that passing more parameters to a function than it has in its definition is valid, this would also be a backward compatible change.
-  * Change the current class autoloading to only call the autoloaders which match with the T_CLASS types. +  * Change the current class autoloading to only call the autoloaders which match with the SPL_AUTOLOAD_CLASS types. 
-  * Add the function autoloading to only call the autoloaders which match with the T_FUNCTION types.+  * Add the function autoloading to only call the autoloaders which match with the SPL_AUTOLOAD_FUNCTION types.
  
 ==== Future improvements ==== ==== Future improvements ====
  
-Notice that currently only functions are proposed, but we could implement autoloading other tokens (T_CONST?) with this interface.+Notice that currently only functions are proposed, but we could implement autoloading other tokens (SPL_AUTOLOAD_CONSTANT, etc.) with this interface. 
 + 
 +==== Examples ==== 
 +<code php> 
 + <?php 
 + // old behavior 
 + spl_autoload_register( 
 +  function ($name) { 
 +   // include the class definition 
 +   /* ... */ 
 +  } 
 + ); 
 + 
 + // autoload functions 
 + spl_autoload_register( 
 +  function ($name) { 
 +   // include the function definition 
 +   /* ... */ 
 +  }, 
 +  true, 
 +  false, 
 +  SPL_AUTOLOAD_FUNCTION 
 + ); 
 + 
 + // autoload mixed 
 + spl_autoload_register( 
 +  function ($name, $type) { 
 +   switch($type){ 
 +    case SPL_AUTOLOAD_CLASS: 
 +     /* ... */ 
 +     break; 
 +    case SPL_AUTOLOAD_FUNCTION: 
 +     /* ... */ 
 +     break;       
 +   } 
 +  }, 
 +  true, 
 +  false, 
 +  SPL_AUTOLOAD_CLASS|SPL_AUTOLOAD_FUNCTION 
 + ); 
 +</code> 
  
 ==== Patch ==== ==== Patch ====
Line 39: Line 81:
   * [[http://www.mail-archive.com/internals@lists.php.net/msg48820.html]]   * [[http://www.mail-archive.com/internals@lists.php.net/msg48820.html]]
  
 +==== Changelog ====
 + * 2011.08.17 - replace the T_* constants with SPL_AUTOLOAD_*
  
rfc/autofunc.txt · Last modified: 2017/09/22 13:28 (external edit)