⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000005.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;midi&nbsp;(迷笛),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;PHP3特有的语言特点&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Nov&nbsp;29&nbsp;04:12:06&nbsp;1999)&nbsp;<BR>&nbsp;<BR>我曾经在bbs.mit.edu里写文章说明过PHP的问题。有兴趣的朋友可以去看看。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>这里我要指出的是,这位朋友概念没有弄清楚:什么叫CGI?&nbsp;<BR>&nbsp;<BR>CGI是Web服务器调用其它进程的接口。其核心是进程调用。以Linux上&nbsp;<BR>的Apache来说,Apache调用的CGI,都是另外fork一个CGI进程。该进程&nbsp;<BR>不是Apache&nbsp;Web&nbsp;Sever的一部分,而是一个独立运行的Application。&nbsp;<BR>因此CGI程序都是独立的可以自己运行的运用程序,只是它们符合一个接口&nbsp;<BR>标准,即CGI标准。&nbsp;<BR>&nbsp;<BR>PHP是一种HTML嵌入式的脚本语言。其构成的HTML只是一种文档,而不是可以&nbsp;<BR>独立运行的运用程序。作为Apache的一个模块,PHP的解释器在用户&nbsp;<BR>请求一个PHP的页面时,实时解释它,并以纯HTML方式输出。PHP解释&nbsp;<BR>器是Web服务器的模块,而不是独立进程。因此,说PHP是“CGI脚本语言”,&nbsp;<BR>概念完全错了。&nbsp;<BR>&nbsp;<BR>另,PHP是一种没有前途的嵌入式脚本语言。原因是多方面的。&nbsp;<BR>一,PHP缺乏规模支持。与之类似的嵌入语言,一个是ASP,一个是JSP&nbsp;<BR>前者可以通过Microsoft&nbsp;Windowsd的COM/DCOM获得ActiveX支持,后者&nbsp;<BR>可以通过SUN&nbsp;Java的Java&nbsp;Class和EJB获得支持&nbsp;<BR>二,缺乏多层结构支持。对于大负荷站点,解决方法只有一个:分布计算。&nbsp;<BR>数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,&nbsp;<BR>组成二维阵列。ASP可以通过DCOM和微软的Transcation&nbsp;Server来获得&nbsp;<BR>这种结构支持,JSP可以通过EJB/CORBA以及众多厂商的Application&nbsp;Server来获得&nbsp;<BR>这种结构支持,但PHP没有这样的条件&nbsp;<BR>三,PHP及其没有道理地实现了一个混乱的不能统一的数据库接口支持,比如&nbsp;<BR>对Oracle,&nbsp;MySQL,&nbsp;Sybase的接口,彼此都不一样。这一点让人感觉不可思议,&nbsp;<BR>而且也使它在电子商务中运用受阻----连PERL都通过DBI而获得一个抽象的&nbsp;<BR>数据库接口!&nbsp;<BR>&nbsp;<BR>美国现在电子商务非常流行。这是指电子商务的支撑环境。微软现在精力&nbsp;<BR>大概都在W2K和大官司上,因此这方面声音很小。IBM的eBuisness的广告相信&nbsp;<BR>大家在各种媒体上都见到了。它的核心是采用JSP/Servlet的Web&nbsp;Sphere。西方&nbsp;<BR>另外一个非常著名的电子商务软件提供商,Intershop。它原来的产品&nbsp;<BR>Intershop1&nbsp;2,&nbsp;3,&nbsp;4占据了主要的电子商务软件份额。它们都是通过CGI来提供支持&nbsp;<BR>的。但今年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务&nbsp;<BR>Application&nbsp;Server,而且声言不再开发传统软件。Allaire相信搞Web&nbsp;<BR>开发的人都听说过,因为它是ColdFushion的开发商。Cold&nbsp;Fushion是一个类似&nbsp;<BR>PHP的东西,但Allaire已经不准备接着开发下去,因为它推出了另外一个&nbsp;<BR>Application&nbsp;Server:&nbsp;JRun,一个JSP/Servlet的工具。在电子商务领域&nbsp;<BR>另外一个非常著名的厂商就是Oracle。Oracle8i已经是一个EJB&nbsp;Container,它的&nbsp;<BR>Application&nbsp;Server采用比较传统的机制,但前两天它推出了它自己的JSP解释器。&nbsp;<BR>&nbsp;<BR>今年早些时候,Netscape公开声明不再开发Liveware技术了。Liveware就是&nbsp;<BR>嵌入式的JavaScript,或者叫Server&nbsp;Side&nbsp;JavaScript.现在它和SUN结成商业&nbsp;<BR>同盟,用的自然是JSP/Servlet.&nbsp;<BR>&nbsp;<BR>国内一些新闻媒体不知道出于什么原因,一直没能赶上美国的这个潮流,&nbsp;<BR>还在大肆宣传一些注定要过时的东西。当然,我不是说PHP要死,它或许还会&nbsp;<BR>存在下去,但只会运用于一些小型的非商业性的站点。&nbsp;<BR>&nbsp;<BR>如果诸位有心在这方面发展,或者想储备一些技术的话,奉劝花些精力&nbsp;<BR>到ASP或者JSP上。在Linux上,JSP能有很多很好的支持和实现,比如IBM&nbsp;WebSphere,&nbsp;<BR>Oracle&nbsp;8i+JSP,Apache&nbsp;Jserv+GNU&nbsp;JSP,&nbsp;Allaire&nbsp;JRun,以及Apache&nbsp;<BR>的一个新的计划:Jarkarta.另外,如果想在以后的电子商务支持上站住脚的&nbsp;<BR>话,还请关注XML——我这两天刚发现国内也有个相关站点:www.xml.org.cn&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;yyh&nbsp;(阿欢&amp;正在努力上进中......)&nbsp;的大作中提到:&nbsp;】&nbsp;<BR>∶<I>&nbsp;PHP3是一种非常强大的CGI脚本语言,就其语言特点基本上源于C,就其实现&nbsp;</I><BR>∶<I>&nbsp;方式而言更象PERL,而其对数据库的内在支持更使之成为ASP的强大对手。&nbsp;</I><BR>∶<I>&nbsp;这里先简要介绍一些PHP3中比较容易弄错的语言特点(与C语言相比较)。&nbsp;</I><BR>∶<I>&nbsp;1.自动屏蔽的全局变量在函数中的使用&nbsp;</I><BR>∶<I>&nbsp;不同于C语言,PHP3中的全局变量在函数中是默认不起作用的,&nbsp;</I><BR>∶<I>&nbsp;比如&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;$a&nbsp;=&nbsp;1;&nbsp;</I><BR>∶<I>&nbsp;function&nbsp;test()&nbsp;</I><BR>∶<I>&nbsp;{&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a;&nbsp;//&nbsp;变量&nbsp;$a&nbsp;未定义&nbsp;</I><BR>∶<I>&nbsp;}&nbsp;</I><BR>∶<I>&nbsp;test();&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a;&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;输出的结果不是预想中的“1&nbsp;1”,&nbsp;而只有一个“1”。因为&nbsp;</I><BR>∶<I>&nbsp;全局变量$a在函数里不存在,test函数里的$a无定义,因此不&nbsp;</I><BR>∶<I>&nbsp;显示,如果要使用全局变量必须用global声明,如&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;$a&nbsp;=&nbsp;1;&nbsp;</I><BR>∶<I>&nbsp;function&nbsp;test()&nbsp;</I><BR>∶<I>&nbsp;{&nbsp;</I><BR>∶<I>&nbsp;global&nbsp;$a;&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a;&nbsp;</I><BR>∶<I>&nbsp;}&nbsp;</I><BR>∶<I>&nbsp;test();&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a;&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;或通过全局变量数组($GLOBALS[])来直接使用,如&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;$a&nbsp;=&nbsp;1;&nbsp;</I><BR>∶<I>&nbsp;function&nbsp;test()&nbsp;</I><BR>∶<I>&nbsp;{&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$GLOBALS[&quot;a&quot;];&nbsp;</I><BR>∶<I>&nbsp;}&nbsp;</I><BR>∶<I>&nbsp;test();&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a;&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;2.奇妙的变量访问机制&nbsp;</I><BR>∶<I>&nbsp;PHP3里的变量名允许嵌套定义,如先定义一个$a=&quot;hello&quot;,然后可以用$$a=&quot;world&quot;&nbsp;</I><BR>∶<I>&nbsp;来访问$hello,最后变成$a=&quot;hello&quot;,&nbsp;$hello=&quot;world&quot;。这里的$操作符有点象C语言&nbsp;</I><BR>∶<I>&nbsp;里的*,但$是以名字(字符串)链接,而*是以地址链接的。如&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;$a&nbsp;=&nbsp;&quot;hello&quot;;&nbsp;//&nbsp;注意不能有空格&nbsp;</I><BR>∶<I>&nbsp;$$a&nbsp;=&nbsp;&quot;world&quot;;&nbsp;</I><BR>∶<I>&nbsp;$$$a&nbsp;=&nbsp;&quot;!&quot;;&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a;&nbsp;//&nbsp;显示&nbsp;hello&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$hello;&nbsp;//&nbsp;显示&nbsp;world&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$world;&nbsp;//&nbsp;显示&nbsp;!&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;另外PHP3还提供了用字符串做数组下标建立和访问数组的方法,如前面用到的全局&nbsp;</I><BR>∶<I>&nbsp;变量数组就是以这种机制访问的,如&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;$a[&quot;first&quot;]&nbsp;=&nbsp;&quot;second&quot;;&nbsp;</I><BR>∶<I>&nbsp;$a[&quot;second&quot;]&nbsp;=&nbsp;&quot;third&quot;;&nbsp;</I><BR>∶<I>&nbsp;$a[&quot;third&quot;]&nbsp;=&nbsp;&quot;first&quot;;&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a[&quot;first&quot;];&nbsp;//&nbsp;显示&nbsp;second&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a[$a[&quot;second&quot;]];&nbsp;//&nbsp;显示&nbsp;first&nbsp;</I><BR>∶<I>&nbsp;print&nbsp;$a[$a[$a[&quot;third&quot;]]];//&nbsp;显示&nbsp;third&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;3.强大的分块方法&nbsp;</I><BR>∶<I>&nbsp;在C里面一个语句块可以用&nbsp;{&nbsp;}&nbsp;来标出,在&nbsp;DELPHI&nbsp;里则是&nbsp;BEGIN&nbsp;END。而在&nbsp;PHP3&nbsp;里&nbsp;</I><BR>∶<I>&nbsp;更可以用一个&quot;:&quot;将一段语句独立成块,这样做的好处不言自明。如&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;$date=getdate(time());&nbsp;</I><BR>∶<I>&nbsp;if($date[&quot;hours&quot;]&nbsp;&lt;&nbsp;12):&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;H1&gt;Good&nbsp;morning!&lt;/H1&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;elseif($date[&quot;hours&quot;]&nbsp;&lt;&nbsp;18):&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;H1&gt;Good&nbsp;afternoon!&lt;/H1&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;else:&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;H1&gt;Good&nbsp;evening!&lt;/H1&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;endif;&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;while语句也支持类似的分块方法,如&nbsp;</I><BR>∶<I>&nbsp;$a=5;&nbsp;</I><BR>∶<I>&nbsp;while($a--&nbsp;&gt;&nbsp;0):&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;H1&gt;print&nbsp;a&nbsp;line&lt;/H1&gt;&nbsp;</I><BR>∶<I>&nbsp;&lt;?&nbsp;</I><BR>∶<I>&nbsp;endwhile;&nbsp;</I><BR>∶<I>&nbsp;?&gt;&nbsp;</I><BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;202.120.189.34]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -