<?php
namespace MyNamespace {
class Numerical {
public static function MyFunction() {
echo 'Called ', __FUNCTION__, '!', PHP_EOL;
}
}
}
namespace AnotherNamespace {
class ClassName {
public static function foo($MethodName) {
/**
* Two backslashes because of \$ escapes to $ character and \\ escapes to «backslash» itself
* @see http://php.net/manual/en/language.types.string.php
* @see http://php.net/manual/en/language.variables.variable.php
* @see http://php.net/manual/en/functions.variable-functions.php
*/
$variable = "\\MyNamespace\\${MethodName}"; // Option one works.
$variable::MyFunction();
}
public static function bar($className) {
('\MyNamespace\\' . $className)::MyFunction(); // Option two works in php version >= 7.1
}
}
ClassName::foo('Numerical');
ClassName::bar('Numerical');
}
Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /in/cAk7W on line 20
Called MyFunction!
Called MyFunction!
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /in/cAk7W on line 20
Called MyFunction!
Called MyFunction!