PHP能参与桌面项目吗?适合吗?——C#客户端 嵌入 PHP 一例

继Python和Ruby能集成C#后,现在PHP也可以嵌入到C#中了。下载(含应用程序源代码和PHP5的dll):Part1 Part2

先看程序界面

 

再看PHP代码:

<?php
function OnDNButton1Click() {
    
$textBox1=dsRE_GetSharedObject(NULL,"WinApp1.Form2.textBox1");
    
$textBox1->Text="Clicking button1";
}
function OnDNButton2Click() {
    
$textBox1=dsRE_GetSharedObject(NULL,"WinApp1.Form2.textBox1");
    
$textBox1->Text="Clicking button2";
}
?>

<?php
$ds=new dsRE();

$window=$ds->GetSharedObject("WinApp1.Form2");                //-->>获得共享对象,C#对象进入PHP之关键
$window->Show();

$Button1=$ds->GetSharedObject("WinApp1.Form2.button1");
$ds->RegistMethod("OnDNButton1Click",$Button1,"Click");

$Button2=$ds->GetSharedObject("WinApp1.Form2.button2");
$ds->RegistMethod("OnDNButton2Click",$Button2,"Click");
?>


核心问题:C#对象如何跨语言进入PHP的呢?

对象的跨语言进入是脚本语言嵌入到编译语言的核心问题,无论Python嵌入到C#或者C/C++,还是JavaScript嵌入到浏览器(window和document等对象可以在js中使用就是这个核心问题的起点),还是C++集成PHP或者Python,都离不开这样的一个核心问题:编译语言的对象如何进入脚本,而脚本的类或者对象又如何被编译语言使用。

 

1 C#对象设为共享对象

SharedAllFormControl("WinApp1",new Form2());

 2 PHP获得该共享对象

$window=$ds->GetSharedObject("WinApp1.Form2");

然后操作它 Show ,对于 button 来说就用 RegistMethod 委托 Click 事件。

对照 JavaScript (MS Script)来说,request=new ActiveXObject("Microsoft.XMLHTTP");这样的语句可以使COM类进入到脚本,还不是把现有对象进入到脚本。对于IronPython来说,python_engine.Globals["o"]=my_class_instance;用全局字典的途径可以使C#对象进入Python中。

至于C++对象进入脚本语言,各自的开发文档都有说明,而且必然支持,这里不再赘述。

后篇:

PHP脚本可以从文件装入,也可以内置在C#程序中,也可以从服务器传来。如果PHP脚本是由服务器传过来的,则可以使客户端更“软”,客户端随时按需由服务器改变,C/S拥有了B/S的最大优点;如果PHP脚本是从文件装入,客户端可以由现场维护工程师就地增加或者修改功能,即时得到客户反馈,提高满足客户要求的效率。

 

在 C# 嵌入 Python 不大流行的情况下,嵌入 PHP 也许是个突破口,毕竟 PHP 比 Python 使用更为广泛。

 

posted @ 2008-08-21 08:18  yesry  阅读(1417)  评论(1编辑  收藏  举报