Включить код из потока PHP

Я задаюсь вопросом, возможно ли вообще создать обертку потока, чтобы загрузить некоторый код из массива в использование чего-то вроде следующего

<?php include 'template://myarraykey/'; ?> 

и работать ли он, как делать нормальное включение из файла? Причина запроса заключается в том, что я действительно не хочу хранить шаблоны в файловой системе, они либо будут существовать в memcache, либо в таблице базы данных и вызывающе не хотят использовать eval ().

Также я бы предположил, что мне нужно включить allow_url_include?

Related of "Включить код из потока PHP"

Я знаю, что это старый вопрос … но я думаю, что стоит отметить, что вы можете сделать что-то вроде:

 $content = ' <?php if($var=true): ?> print this html <?php endif; ?> '; 

Обычно это было бы очень громоздким для оценки, но вы можете сделать:

 include "data://text/plain;base64,".base64_encode($content); 

И он будет разбирать это быстро!

Include может принимать произвольные URL-адреса. Прочтите это . Вот пример HTTP-кода, взятый оттуда:

 <?php /* This example assumes that www.example.com is configured to parse .php * files and not .txt files. Also, 'Works' here means that the variables * $foo and $bar are available within the included file. */ // Won't work; file.txt wasn't handled by www.example.com as PHP include 'http://www.example.com/file.txt?foo=1&bar=2'; // Won't work; looks for a file named 'file.php?foo=1&bar=2' on the // local filesystem. include 'file.php?foo=1&bar=2'; // Works. include 'http://www.example.com/file.php?foo=1&bar=2'; $foo = 1; $bar = 2; include 'file.txt'; // Works. include 'file.php'; // Works. ?> 

И просто измените его на include "template://$thevalue";

eval, это слово, не является злом. Вещи, которые вы можете сделать с этим. Любые способы делать то, что вы хотите, будут иметь тот же риск, что и eval. Так что просто используйте eval, так как обеспечение его является более «известной» проблемой.

Поскольку include может использовать любой соответствующий поток, и вы можете зарегистрировать свою собственную обертку потока, я не понимаю, почему нет.

Просто для удовольствия вы можете попробовать альтернативу: загрузите свои данные из memcached и включите его, используя оболочку потока данных .