当今在WWW是世界里,PHP已经是一个不可忽视的强大力量,身为开源的先锋,已经为各种的开源产品作出了表率作用,用现在流行的话就是,草根的力量,星星之火可以燎原,众多的一流网站国外的facebook,Iyohoo,国内有开心网,都是用以前被很多专家看不起的PHP来开发的,开源的产品成为主流已经成为可能。近几年,随着智能手机普及,手机硬件性能的不断提高,手机已经进入了一个新的阶段,PC机上的众多软件移植到手机系统上已经是大势所趋,移动系统软件已经成为,软件开发的重要增长点,PHP在移动市场的前景是什么呢?让我们来探索一下。
要说PHP在移动领域的开发,我们首先要先来介绍一个对与PHP和移动领域都很重要的名词“Widget”,要说到Widget,很多人可能都听说过,因为当今Widget是一个十分有人气的技术概念,在很多的领域都有应用,但恐怕真正知道什么是Widget的人就很少了,下面我先给大家介绍一下什么是Widget吧,简单的说 Widget就是轻量级的UI控件,为用户展示不同的个性化的信息。
目前Widget主要有4个大类:
一. 操作系统Widget(如苹果、Windows widget)二. 网站应用Widget(例如:Facebook、iGoogle。)。三. 迷你应用程序Widget(Yahoo Widget)。四. 手机Widget(OphoneOS widget,Android widget,诺基亚widgets)。
下面我介绍一下用PHP来开发widget的一段应用样例:
让我们来看看PHP-GTK
PHP-GTK是PHP的延伸模组,它可以让程式设计师写出在客户端执行的、且独立的GUI的程式。这个模组不允许在浏览器上显视GTK+的程式,它一开始就是开发来写独立的GUI程式的。
Widget是一个GUI程式中基本的functions和forms。最常用的几个Widget是:label、button、window、frame和text box。所有的widget都是来自於一个抽象的基本class─GtkWidget。每个widget都是一个class一个Widget一生大概都有五个时期:
1. 建立(Creation):宣告一个物件(declaring an object)
2. 放置(Placement):将它加入一个容器中(adding it to a container)
3. 信号连接(Signal Connection):接收信号以及进行动作(the action it will perform)
4. 显示(Display):它是否是可见的(whether it is viewable or not)
5. 删除(Destruction):关闭程式(closing of a program)
Container是一个可以包含其他widget的widget。大部分的widget都是container,例如:GtkWindow、GtkTable和GtkBox。除了这点之外,container跟其他的widget没两样,也可以被放到其他container去。Signal(s)当程式设计师在程式中做了一个动作时,程式需要有一个动作来回应使用者的动作。Signals使程式可以知道使用者做了动作并可以触发适合的回应。Callback就是当signal送出之後,被signal唤起的function。Callback会执行function传回一个值或是做一个动作。Callback就是signal的handler funciton。它可以是该signal的预设handler或着是程式设计师定义的function。要建立一个callback,就必须把function connect 到 signal。Signal Inheritance(继承)和methods一样,signals可以被物件继承。一个widget可以送出任何它的parent widget可以送出的还有它自己特有的signal。
你必须为PHP-GTK指定一个callback function当signal送出时来对signal做回应。把一个signal连接到一个function可以用connect() 这个object 方法达成。如下:
<?php
//建立一个GtkWindow
$window = &new GtkWindow();
//将"destroy" signal用connect() 方法连接到shutdown函式
$window->connect("destroy", "shutdown");
//建立一个GtkButton,按钮文字为"按我"
$button = &new GtkButton("按我");
$button->connect("clicked", "you_clicked");
//把GtkButton放到是container的GtkWindow中
$window->add($button);
//显示$window以及它的所有child widget
$window->show_all();
//进入程式主回圈(即程式启动之意)
gtk::main();
?>执行它的话,就会出现一个视窗,里面有一个写着"按我"的按钮,按下按钮程式就会执行you_clicked函式。在这个程式中,$window物件的"destroy" signal是在使用者按下视窗右上角的"X"时会送出的;而$button物件的"clicked" signal是在使用者按下该按钮的时候会送出的。最後那一行的gtk::main() 是一定要执行的,这样才能告诉电脑要开始执行程式,既然有开始执行,那就一定有停止吧? 没错,用gtk::main_quit() 就可以停止程式了。
介绍了PHP的widget应用,然后让我们看一下widget未来可能存在的巨大前景,在手机平台上widget的应用可以说是现在的热点,可以说widget的巨大前景就是在手机市场上,手机和Widget的关系可以说是已经十分密切了,几乎所有新兴手机操作系统平台都有对Widget的支持,而且都把widget看成很重要的一个部分,比如android和OphoneOS,webOS,从操作系统来看,手机巨大的市场价值和潜力让widget在未来有很巨大的市场。    现在在手机操作系统方面,和PHP同样是开源的操作系统android和OphoneOS可以说是未来widget的最好搭档,重所周知,android和OphoneOS的核心都是linux,而linux也是现在PHP在服务器市场的最佳搭档,从安全和开源的角度来看都将是未来手机平台的巨大推动力量。android和OphoneOS必然是未来widget的最佳发展平台。
Android 是Google开发的基于Linux平台的开源手机操作系统.象wm,Symbian一样 。同时用户界面UI设计得比Iphone还漂亮,估计未来市场也会不错。对于开发人员或公司来说,不需要购买license,这样极大地节省了开发费用。
OphoenOS是,中国移动主导开发的,采用了linux2.6的系统内核,而且兼容android所有应用的智能手机操作系统。也具备开源软件的所有优点。同时用户界面UI设计更加人性化,内置了中移动类似移动梦网等主要3G特色业务,未来的网络业务使用起来将非常便利。
从中国移动一贯的市场运作能力来说,这款操作系统以及手机,未来在移动自身的庞大用户市场上推广,可以预计会有比较不错的表现。做为开发人员来说不能不对它关注。未来的市场,和由此产生的高收入岗位空间,以及给个人创业带来的机会,都是不可小靓的。移动最近又刚推出了在线手机商店,都会进一步推动市场快速发展。如果大家有兴趣了解Android和Ophone,我给大家推荐2个地址:
学习Gphone Android可以去这里看看http://www.android.com。有很多开发经验交流内容。
想了解OphoenOS,可以去http://www.ophonesdn.com官方网站,入门教程很实用,有很多开发、移植方法经验交流的文章和帖子,入门不错。