Warning: This post is totally useless. It is the result of a fun private company thread.
Export functions in Javascript
In Javascript, a file can export functions like this:
export function times2(x) {
return x * 2;
}
And then we can import this function in another file like this:
import {times2} from 'foo';
console.log(times2(21)); // 42
Is it possible with PHP?
Export functions in PHP
Every entity is public in PHP: Constant, function, class, interface, or trait. They can live in a namespace. So exporting functions in PHP is absolutely useless, but just for the fun, let’s keep going.
A PHP file can return an integer, a real, an array, an anonymous function, anything. Let’s try this:
<?php
return function (int $x): int {
return $x * 2;
};
And then in another file:
<?php
$times2 = require 'foo.php';
var_dump($times2(21)); // int(42)
Great, it works.
What if our file returns more than one function? Let’s use an array (which has most hashmap properties):
<?php
return [
'times2' => function (int $x): int {
return $x * 2;
},
'answer' => function (): int {
return 42;
}
];
To choose what to import, let’s use the list
intrinsic. It has several forms: With or without key matching, long (list(…)
) and short syntax ([…]
). Because we are modern, we will use the short syntax with key matching to selectively import functions:
<?php
['times2' => $mul] = require 'foo.php';
var_dump($mul(21)); // int(42)
Notice that times2
has been aliased to $mul
. What a feature!
Is it useful? Absolutely not. Is it fun? For me it is.
Totally get you. It makes absolutely no sense in PHP but playing with the language is fun. One of the reasons I love PHP over javascript is because of its built-in namespace system. It’s awesome. Javascript imports are just hacks.
LikeLike