设为首页 收藏本站
查看: 446|回复: 0

[经验分享] PHP能参与桌面项目吗?适合吗?——C#客户端 嵌入 PHP 一例

[复制链接]

尚未签到

发表于 2015-8-27 12:43:01 | 显示全部楼层 |阅读模式
  继Python和Ruby能集成C#后,现在PHP也可以嵌入到C#中了。下载(含应用程序源代码和PHP5的dll):Part1 Part2
  先看程序界面
DSC0000.png
  再看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脚本是由服务器传过来的,则可以使客户端更&#8220;软&#8221;,客户端随时按需由服务器改变,C/S拥有了B/S的最大优点;如果PHP脚本是从文件装入,客户端可以由现场维护工程师就地增加或者修改功能,即时得到客户反馈,提高满足客户要求的效率。
  
  在 C# 嵌入 Python 不大流行的情况下,嵌入 PHP 也许是个突破口,毕竟 PHP 比 Python 使用更为广泛。
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105037-1-1.html 上篇帖子: php设计模式 — 单例模式(singleton) 下篇帖子: php里怎么找不到sqlparameter???
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表