Чтобы использовать константы внутри строк, вы можете использовать следующий метод:
define( 'ANIMAL', 'turtles' );
$constant = 'constant';
echo "I like {$constant('ANIMAL')}";
Можно помещать любое имя функции в переменную и вызывать ее с параметрами внутри строки с двумя кавычками.
$fn = 'substr';
echo "I like {$fn('turtles!', 0, -1)}";
Производит
Мне нравятся черепахи
blockquote>Также анонимные функции
Вы также можете использовать анонимные функции при запуске PHP 5.3 +.
$escape = function ( $string ) { return htmlspecialchars( (string) $string, ENT_QUOTES, 'utf-8' ); }; $userText = "<script>alert('xss')</script>"; echo( "You entered {$escape( $userText )}" );
Производит правильно экранированный html, как ожидалось.
Массивы обратного вызова не разрешены!
Если к настоящему времени у вас создается впечатление, что имя функции может быть любым вызываемым, это не так, поскольку массив, который возвращает true при передаче в
is_callable
, приведет к фатальной ошибке при использовании внутри строки:class Arr { public static function get( $array, $key, $default = null ) { return is_array( $array ) && array_key_exists( $key, $array ) ? $array[$key] : $default; } } $fn = array( 'Arr', 'get' ); var_dump( is_callable( $fn ) ); // outputs TRUE // following line throws Fatal error "Function name must be a string" echo( "asd {$fn( array( 1 ), 0 )}" );
Имейте в виду
Эта практика не рекомендуется, но иногда приводит к гораздо более читаемому коду, так что это зависит от вас - есть возможность.
Если вы удалите 'points =' из файла, вы получите структуру данных, которую можно загрузить с помощью json.load ()
import json
with open("my_file_after_cleanup.json", "r") as read_file:
data = json.load(read_file)