Coldfusion и php, в одном файле?

На этом сервере я могу использовать файлы .cfm и .php. Оба типа будут проанализированы, как и ожидалось.

Тем не менее, я хочу, чтобы файлы .cfm были проанализированы и для php. Например,

//test.cfm:
<cfoutput>hello from cf</cfoutput>
<?php echo 'hello from php'; ?>
// outputs the php, verbatim, without processing :(

Я знаю, что могу изменить конфигурацию php, чтобы разобрать .cfm. Я не знаю, в каком порядке будет проходить разбор, или какие-либо другие плюсы и минусы, хитрости и советы.

Цель здесь состоит в том, чтобы я хотел обернуть php (который я хорошо знаю) в файл cfm (гораздо меньше опыта). Файл cfm будет находиться в разделе администратора, который автоматически проверяет аутентификацию пользователя и включает в себя другие файлы cf.

Таким образом, мне кажется, что если Coldfusion анализирует файл (проверяет user-auth и все такое), а затем передает его php, это будет процесс, который я ищу.

0

Решение

Это было сделано:

Увидеть: http://www.barneyb.com/barneyblog/projects/cfgroovy2/

Большая часть документации содержит смешение ColdFusion и Groovy, но могут быть смешаны и другие языки.

Пример кода:

<cfimport prefix="g" taglib="engine" />

...

<h2>Run some PHP (via Quercus)</h2>
<cftry>
<g:script lang="php">
<?php
$variables["myArray"][] = "Pretty Happy People wrote PHP.";
echo "<pre>";
var_dump($variables["myArray"]);
echo "</pre>";
?>
</g:script>
<cfcatch type="CFGroovy.UnknownLanguageException">
<p>Quercus needs to be added to your classpath for the PHP example to work</p>
</cfcatch>
<cfcatch type="any">
<p>Error running PHP code: #cfcatch.message#</p>
<p>#cfcatch.detail#</p>
</cfcatch>
</cftry>

Источник: https://ssl.barneyb.com/svn/barneyb/cfgroovy2/trunk/demo/index.cfm

1

Другие решения

Это будет зависеть от сервера приложений ColdFusion, того, что он поддерживает и какого уровня взаимодействия вы хотите. Как правило, если вы хотите иметь возможность смешивать переменные в выражениях, то вам нужно предоставить общий доступ к ColdFusion pageContext и убедиться, что переменные php записаны и обновлены. Я не верю, что приведенный выше пример делает это, но я рад, что исправлюсь. Другая альтернатива — вызвать ColdFusion из PHP, снова используя Quercus. Эти 2 статьи помогут вам сделать это. Первый показывает, как вызвать Java из PHP, второй — как вызвать ColdFusion из Java.

http://quercus.caucho.com/quercus-3.1/doc/quercus.xtp#Instantiatingobjectsbyclassname
http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSe61e35da8d318518-106e125d1353e804331-7ffb.html

Сначала создайте компонент ColdFusion, который может динамически визуализировать ColdFusion.

<cfcomponent displayname="ColdFusion renderer" output="false">
<cffunction name="render" returntype="'String' or 'Any'">
<!---
Do something with the coldfusion code here e.g:

write to a file using <CFFILE> and then <CFMODULE> or <CFINCLUDE>,<CFSAVECONTENT> it

or if the ColdFusion is all script, use the evaluate() function

--->
</cffunction>
</cfcomponent>

вызывать компонент в PHP, через Java, используя CFCProxy

<?php
function cfml($code)
{
$cfc = new Java("coldfusion.cfc.CFCProxy", "path/to/cfc/above");
$cfc.render($code);
}

echo 'hello from php';

cfml(<<<EOT
<cfoutput>Hello from CF</cfoutput>
EOT
);
?>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector