专家预言:PHP将比Java更受欢迎
更新时间:2016年11月25日 16:15 点击:1345
Netscape共同创办人Marc Andreessen在周三(10/19)举行的Zend/PHP会议上预言,简单的PHP描述性语言撰写工具,在Web-based应用程序的开发上,将会比Java更受欢迎。
在升阳(Sun Microsystems)于1995年发表Java之后,由于Java的友善接口让工程师设计软件更为容易,受到工程师欢迎,但十年下来Java陆陆续续被加入了强大的功能,反而使它变得不容易操作。Marc Andreessen指出,现在的Java可能比C 更难学,在此同时,PHP传承了Java的简单精神,并创造一个比Java更容易使用的程序开发环境。
PHP为一开放原始码项目,其中包括可以简化程序的描述性语言引擎以及一个大的链接库,也有专门开发PHP的公司,如Zend就有销售PHP套装产品、程序撰写工具及技术支持服务。
Andreessen的看法可能很难博得Java拥护者的认同,因为现阶段全球仍有数百万专研Java的工程师,也有数百家公司参与Java Community Process(JCP),在JCP中共同主掌Java的命运。但是,就算是大力扶植Java、甚至以Java为WebSphere服务器软件核心的IBM,也认为PHP的前途会比Java来得好。
IBM新网络科技事业处副总裁Rod Smith就说,「简单」是PHP最大的特色,而且它不会为了与其它语言竞争而加入新的语言功能,Java显然就不是这么做。
而且,PHP的势力也不小,目前约有2200万的网站采用PHP,包括Yahoo!、Lufthansa等知名网站,数量并持续增加中,并有450个软件工程师有权去审核在PHP软件上的任何变动。
与Java相较,PHP可用范畴限制较多,它仅能用在网络服务器上,不像Java,同时可用在网络服务器、个人计算机、手机、芯片卡或其它装置。
Java和PHP除了在某些方面相互竞争之外,某个程度来看,也在彼此靠陇。甲骨文产品策略副总Ken Jacobs表示,即使甲骨文(Oracle)销售同时可执行Java及PHP的Java服务器与数据库软件,但正为Java加上一项额外的新功能,让这两个软件项目可以协同运作;更具体的说,Java规格需求223(JSR 223)将会「协助建构在Java社群与PHP社群之间的那座桥梁」。
日前才发表可以分享照片等内容网站「Ning」的Marc Andreessen也说,现在Ning也同时执行Java与PHP,其中核心系统是由Java组成,比起该站所有可看见的应用程序都是由PHP写成,Java更像是操作系统层级。
就像其它诸如Linux及Apache的开放原始码项目,PHP目前也受到计算机工业主要大厂的庇佑,像IBM跟Oracle都致力开发让PHP软件可以撷取旗下数据库的程序。事实上,IBM与Oracle的行为就像在为PHP背书,连这两大厂都支持PHP,证明PHP也许就是个好东西。
在zend.com找到了答案,提供了一组例子,这里下载:http://www.zend.com/apidoc/examples.tar.gz
这样返回一个数组
PHP_FUNCTION(array_experiments)
{
zval *new_element;
MAKE_STD_ZVAL(new_element);
array_init(return_value);
ZVAL_LONG(new_element, 10);
zend_hash_index_update(HASH_OF(return_value), 3, (void *)&new_element, sizeof(zval *), NULL);
add_next_index_long(return_value, 20);
}
具体函数参见php手册 zend api部分 不过这部分的内容一直都没有翻译成中文的...看得时候好吃力,用金山词霸也看不懂,英文太烂了,期待那天那个高人没事儿给翻译了...呵呵
无限级分类,主要是通过储存上级分类的id以及分类路径来实现。由于数据的结构简单,所以要将分类的关系由树状显示,我只能想到用递归的方式给于实现,下面是分类数据表结构和自己写的一个树状显示函数,有什么不妥的地方希望大家能指出。
表结构:id字段为分类标识,name字段为分类名,father_id字段为所属父分类的id,path字段为分类路径(储存该分类祖先的集合),isdir判断是否是目录(1为是,0为否)。
显示函数:
//$count为分类等级
sort_list($str,$fatherid,$count)
{
$rs = $this->sql->re_datas("select * from sort where father_id = fatherid");
$num = $this->sql->sql_numrows();
$i=0;
$n = 1;
while(isset($rs[$i]))
{
$name = "";
for($n = 1 ; $n < $count ; $n )
{
$name.="│ ";
}
if($i 1==$num)
{
$name.="└─".$rs[$i][name];
}
else
{
$name.="├─".$rs[$i][name];
}
if($rs[$i][isdir])
{
$str.="<span style='color:#CCCCCC'>".$name."</span>";
}
else
{
$str.=$name";
}
$temp = $count 1;
$str = $this->sort_list($str,$rs[$i][id],$temp);
$i ;
}
return $str;
}
其中$this->sql对象为sql操作类对象,re_datas()函数返回查到的数组,sql_numrows()函数返回查询到的数目
调用方法:$sort_list = sort_list($sort_list,0,1);
以上为个人思想,还望大家多多指点。by 5w台灯
Smarty中的分页有很多方法。
1。使用Smarty的分页插件,如Pager,pagnition,sliding_page等,不过感觉都不是太好,几乎都有一些Bug。
有兴趣试用和自己去改进的朋友可以看看:
http://smarty.php.net/contribs/plugins/view.php/function.pager.php
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=2327
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=1604
2。使用分页类库,呵呵,这个网上就太多了,一大把,不过我还没有发现写得很好的,特别是容易扩展的。
在搜索的时候还看到一个号称分页类终结者的,哈哈,有点好笑。分页类中把SQL都包含进去了,这个是绝对不能容忍的,可以说作者对OO的认识还比较浅。
不过分页类库不一定适合Smarty,特别是当记录集数据是二维数组时,我不想放弃Smarty方便的Section。这是我没有用PEAR::Pager的原因,否则还要先对数组进行处理,也很麻烦。
3。自己写啦。。我暂时没有选择写成类库,不过改写很容易,下面主要讲讲思路。
其实Smarty的分页非常简单,首先我们可以在模板中这样实现:
{$pager_Links}
{section name="list" loop=$productID start=0 max=$pager_Total step=1}
{if ($smarty.section.list.index >= $pager_StartNum )&& ($smarty.section.list.index <= $pager_EndNum )}
产品名称:{$productName[list]}
产品类别:{$catalogName[list]}
{/if}
{/section}
以上就可以将一个记录集(二维数组)轻松地打印出来,而且限定每页的显示范围。
{$pager_Links} 分页标签(就是上一页,下一页等)
max=$pager_Total 记录总数
$smarty.section.list.index >= $pager_StartNum )&& ($smarty.section.list.index <= $pager_EndNum )
这一行是用来限定记录的显示范围的,如果记录的索引落在这个范围之内就显示出来,否则就不显示。
以上可以看出,在PHP文件中,我们只需要传递4个变量给Smarty对象:
1.记录总数
2.每页记录起始数
3.每页记录结束数
4.分页标签
以下代码代参考:
标签可以自己去写了,可以扩充成更强大的。现在我没有时间,不然会写一个
<?php
$smartyArr = $smarty->get_template_vars();
//记录总数,每页显示记录条数,总页数
安装PHP4.3.5RC3.dev(Win32) Apache 2.0.52(For Win32)和j2sdk 1.4 (For Win32)都不用说了,如果不会安装,请看相关手册。
在PHP配置文件php.ini中找到 " ;extension=php_java.dll " 这上行,并把前面的分号去掉;
再找到:
[Java]
;java.class.path =
;java.home =
;java.library =
;java.library.path =
改为:
java.class.path = "JAVA的CLASS_PATH;(将要放置自己的class文件的目录)d:java_for_php"
java.home = "JAVA的JAVAHOME"
java.library = "JAVA的JAVAHOMEjreinserverjvm.dll"
java.library.path = "PHP安装目录extensions"
修改好后,php.ini 文件必须放在Windows安装目录内,重新启动Apache。
在d:java_for_php内新建一个PhpCallJava.java ,内容如下:
在升阳(Sun Microsystems)于1995年发表Java之后,由于Java的友善接口让工程师设计软件更为容易,受到工程师欢迎,但十年下来Java陆陆续续被加入了强大的功能,反而使它变得不容易操作。Marc Andreessen指出,现在的Java可能比C 更难学,在此同时,PHP传承了Java的简单精神,并创造一个比Java更容易使用的程序开发环境。
PHP为一开放原始码项目,其中包括可以简化程序的描述性语言引擎以及一个大的链接库,也有专门开发PHP的公司,如Zend就有销售PHP套装产品、程序撰写工具及技术支持服务。
Andreessen的看法可能很难博得Java拥护者的认同,因为现阶段全球仍有数百万专研Java的工程师,也有数百家公司参与Java Community Process(JCP),在JCP中共同主掌Java的命运。但是,就算是大力扶植Java、甚至以Java为WebSphere服务器软件核心的IBM,也认为PHP的前途会比Java来得好。
IBM新网络科技事业处副总裁Rod Smith就说,「简单」是PHP最大的特色,而且它不会为了与其它语言竞争而加入新的语言功能,Java显然就不是这么做。
而且,PHP的势力也不小,目前约有2200万的网站采用PHP,包括Yahoo!、Lufthansa等知名网站,数量并持续增加中,并有450个软件工程师有权去审核在PHP软件上的任何变动。
与Java相较,PHP可用范畴限制较多,它仅能用在网络服务器上,不像Java,同时可用在网络服务器、个人计算机、手机、芯片卡或其它装置。
Java和PHP除了在某些方面相互竞争之外,某个程度来看,也在彼此靠陇。甲骨文产品策略副总Ken Jacobs表示,即使甲骨文(Oracle)销售同时可执行Java及PHP的Java服务器与数据库软件,但正为Java加上一项额外的新功能,让这两个软件项目可以协同运作;更具体的说,Java规格需求223(JSR 223)将会「协助建构在Java社群与PHP社群之间的那座桥梁」。
日前才发表可以分享照片等内容网站「Ning」的Marc Andreessen也说,现在Ning也同时执行Java与PHP,其中核心系统是由Java组成,比起该站所有可看见的应用程序都是由PHP写成,Java更像是操作系统层级。
就像其它诸如Linux及Apache的开放原始码项目,PHP目前也受到计算机工业主要大厂的庇佑,像IBM跟Oracle都致力开发让PHP软件可以撷取旗下数据库的程序。事实上,IBM与Oracle的行为就像在为PHP背书,连这两大厂都支持PHP,证明PHP也许就是个好东西。
在zend.com找到了答案,提供了一组例子,这里下载:http://www.zend.com/apidoc/examples.tar.gz
这样返回一个数组
PHP_FUNCTION(array_experiments)
{
zval *new_element;
MAKE_STD_ZVAL(new_element);
array_init(return_value);
ZVAL_LONG(new_element, 10);
zend_hash_index_update(HASH_OF(return_value), 3, (void *)&new_element, sizeof(zval *), NULL);
add_next_index_long(return_value, 20);
}
具体函数参见php手册 zend api部分 不过这部分的内容一直都没有翻译成中文的...看得时候好吃力,用金山词霸也看不懂,英文太烂了,期待那天那个高人没事儿给翻译了...呵呵
无限级分类,主要是通过储存上级分类的id以及分类路径来实现。由于数据的结构简单,所以要将分类的关系由树状显示,我只能想到用递归的方式给于实现,下面是分类数据表结构和自己写的一个树状显示函数,有什么不妥的地方希望大家能指出。
表结构:id字段为分类标识,name字段为分类名,father_id字段为所属父分类的id,path字段为分类路径(储存该分类祖先的集合),isdir判断是否是目录(1为是,0为否)。
显示函数:
//$count为分类等级
sort_list($str,$fatherid,$count)
{
$rs = $this->sql->re_datas("select * from sort where father_id = fatherid");
$num = $this->sql->sql_numrows();
$i=0;
$n = 1;
while(isset($rs[$i]))
{
$name = "";
for($n = 1 ; $n < $count ; $n )
{
$name.="│ ";
}
if($i 1==$num)
{
$name.="└─".$rs[$i][name];
}
else
{
$name.="├─".$rs[$i][name];
}
if($rs[$i][isdir])
{
$str.="<span style='color:#CCCCCC'>".$name."</span>";
}
else
{
$str.=$name";
}
$temp = $count 1;
$str = $this->sort_list($str,$rs[$i][id],$temp);
$i ;
}
return $str;
}
其中$this->sql对象为sql操作类对象,re_datas()函数返回查到的数组,sql_numrows()函数返回查询到的数目
调用方法:$sort_list = sort_list($sort_list,0,1);
以上为个人思想,还望大家多多指点。by 5w台灯
Smarty中的分页有很多方法。
1。使用Smarty的分页插件,如Pager,pagnition,sliding_page等,不过感觉都不是太好,几乎都有一些Bug。
有兴趣试用和自己去改进的朋友可以看看:
http://smarty.php.net/contribs/plugins/view.php/function.pager.php
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=2327
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=1604
2。使用分页类库,呵呵,这个网上就太多了,一大把,不过我还没有发现写得很好的,特别是容易扩展的。
在搜索的时候还看到一个号称分页类终结者的,哈哈,有点好笑。分页类中把SQL都包含进去了,这个是绝对不能容忍的,可以说作者对OO的认识还比较浅。
不过分页类库不一定适合Smarty,特别是当记录集数据是二维数组时,我不想放弃Smarty方便的Section。这是我没有用PEAR::Pager的原因,否则还要先对数组进行处理,也很麻烦。
3。自己写啦。。我暂时没有选择写成类库,不过改写很容易,下面主要讲讲思路。
其实Smarty的分页非常简单,首先我们可以在模板中这样实现:
{$pager_Links}
{section name="list" loop=$productID start=0 max=$pager_Total step=1}
{if ($smarty.section.list.index >= $pager_StartNum )&& ($smarty.section.list.index <= $pager_EndNum )}
产品名称:{$productName[list]}
产品类别:{$catalogName[list]}
{/if}
{/section}
以上就可以将一个记录集(二维数组)轻松地打印出来,而且限定每页的显示范围。
{$pager_Links} 分页标签(就是上一页,下一页等)
max=$pager_Total 记录总数
$smarty.section.list.index >= $pager_StartNum )&& ($smarty.section.list.index <= $pager_EndNum )
这一行是用来限定记录的显示范围的,如果记录的索引落在这个范围之内就显示出来,否则就不显示。
以上可以看出,在PHP文件中,我们只需要传递4个变量给Smarty对象:
1.记录总数
2.每页记录起始数
3.每页记录结束数
4.分页标签
以下代码代参考:
标签可以自己去写了,可以扩充成更强大的。现在我没有时间,不然会写一个
<?php
$smartyArr = $smarty->get_template_vars();
//记录总数,每页显示记录条数,总页数
安装PHP4.3.5RC3.dev(Win32) Apache 2.0.52(For Win32)和j2sdk 1.4 (For Win32)都不用说了,如果不会安装,请看相关手册。
在PHP配置文件php.ini中找到 " ;extension=php_java.dll " 这上行,并把前面的分号去掉;
再找到:
[Java]
;java.class.path =
;java.home =
;java.library =
;java.library.path =
改为:
java.class.path = "JAVA的CLASS_PATH;(将要放置自己的class文件的目录)d:java_for_php"
java.home = "JAVA的JAVAHOME"
java.library = "JAVA的JAVAHOMEjreinserverjvm.dll"
java.library.path = "PHP安装目录extensions"
修改好后,php.ini 文件必须放在Windows安装目录内,重新启动Apache。
在d:java_for_php内新建一个PhpCallJava.java ,内容如下:
下一篇: PHP函数点评
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解
这篇文章主要介绍了Java 8 Stream Collectors 功能与操作方法,结合实例形式详细分析了Java 8 Stream Collectors 功能、操作方法及相关注意事项,需要的朋友可以参考下...2020-05-20- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29