rfc:consistent_callables
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:consistent_callables [2019/04/28 02:51] – Made scope of changes even smaller. danack | rfc:consistent_callables [2021/10/20 13:18] (current) – danack | ||
---|---|---|---|
Line 3: | Line 3: | ||
* Date: 2019-04-28 | * Date: 2019-04-28 | ||
* Author: Dan Ackroyd | * Author: Dan Ackroyd | ||
- | * Status: | + | * Status: |
* First Published at: https:// | * First Published at: https:// | ||
Line 178: | Line 178: | ||
// Fatal error: Uncaught TypeError: Argument 1 passed to Foo:: | // Fatal error: Uncaught TypeError: Argument 1 passed to Foo:: | ||
// callable, string given, called in /in/7SCuB on line 34 and defined in / | // callable, string given, called in /in/7SCuB on line 34 and defined in / | ||
- | i.e. calling `self:: | ||
</ | </ | ||
+ | |||
+ | i.e. calling `self:: | ||
=== call_user_func different from is_callable === | === call_user_func different from is_callable === | ||
Line 211: | Line 212: | ||
// This is foo::bar | // This is foo::bar | ||
// Fatal error: Uncaught Error: Class ' | // Fatal error: Uncaught Error: Class ' | ||
- | i.e. despite something being ' | ||
</ | </ | ||
+ | |||
+ | i.e. despite something being ' | ||
Line 224: | Line 226: | ||
- A string that is the name of a function. | - A string that is the name of a function. | ||
- An array consisting of two elements; a string at index 0 which is a valid fully qualified class name, and a string at index 1 which must meet the conditions: | - An array consisting of two elements; a string at index 0 which is a valid fully qualified class name, and a string at index 1 which must meet the conditions: | ||
- | * either be the name of a public static function of the class or the class must have a magic __callStatic method. | + | * either be the name of a public static function of the class or the class must have a magic %%__callStatic%% method. |
+ | * the name must not be that of an instance method. | ||
+ | - An array consisting of two elements; an object at index 0, and a string at index 1 where either the string is the name of a public method of the object, or the object has a magic %%__call%% method. | ||
+ | - A string of the form `%CLASS_NAME%:: | ||
+ | * either be the name of a public static function of the class or the class must have a magic %%__callStatic%% | ||
* the name must not be that of an instance method. | * the name must not be that of an instance method. | ||
- | - An array consisting of two elements; an object at index 0, and a string at index 1 where either the string is the name of a public method of the object, or the object has a magic __call method. | ||
- An instance of a class (an object) where the class has a public __invoke() method. | - An instance of a class (an object) where the class has a public __invoke() method. | ||
- Closures, which includes anonymous functions. | - Closures, which includes anonymous functions. | ||
+ | |||
Note - Does not affect calling private/ | Note - Does not affect calling private/ | ||
Line 253: | Line 259: | ||
</ | </ | ||
- | In this example, although `$fn` is not a callable that can be passed around to arbitrary scopes, it is valid to call it in the scope that it's in. call_user_func and $fn() will continue to check whether the variable passed in is callable in the current scope. i.e. with is_callable($fn, | + | In this example, although `$fn` is not a callable that can be passed around to arbitrary scopes, it is valid to call it inside |
==== The strings ' | ==== The strings ' |
rfc/consistent_callables.1556419900.txt.gz · Last modified: 2019/04/28 02:51 by danack