PHP,21世纪的霸主(德国人写的文章,吹的神乎其神)

发表于:2007-05-25来源:作者:点击数: 标签:php21世纪霸主德国人写的
PHP,21世纪的霸主(德国人写的文章,吹的神乎其神)cyman20(翻译) 关键字php 出处http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/PHP-HOWTO.pdf 译者注:这是一篇德国人写的关于PHP的“长篇大论”,作者在文中把PHP吹的神乎其神,

PHP,21世纪的霸主(德国人写的文章,吹的神乎其神)    cyman20(翻译) 
  
关键字     php 
  
出处     http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/PHP-HOWTO.pdf 
  


  译者注:这是一篇德国人写的关于PHP的“长篇大论”,作者在文中把PHP吹的神乎其神,大有一统江湖的架势。且不去管它观点是否正确,这么一篇经典的“吹牛奇文”对我们这些诚惶诚恐的PHP程序员来说,到是非常值得一看的。还是闲话少说,让我们开始欣赏这骗奇文吧!    

 

1.序言

定义:PHP是一种简单的,面向对象的,解释型的,健壮的,安全的,性能非常之高的,独立于架构的,可移植的,动态的脚本语言。PHP具有和JAVA类似的Class关键字。因为不需要虚拟机,以致速度比JAVA快5倍。PHP正迅速变成一种标准的,多用途的,面向对象的脚本语言。PHP不仅可用来开发Web应用程序,也可以开发普通应用程序。

 

PHP是一种功能强大的脚本语言。PHP将击败PERL/Python并取而代之。PHP是下一代的PERL/Python脚本。PHP可以胜任任何PERL/Python做的工作,并且做的更多,更好,更简洁!!

 

PHP是Hypertext Pre-Processor(超文本预处理器)的缩写,它是一种服务器端的HTML脚本/编程语言。PHP语法上与C相似,可运行在Apache, Netscape/iPlanet, 和 Microsoft IIS Web 服务器上。PHP作为一种工具,可以让你创建动态的Web页面。应用PHP的网页与常规的HTML页面并无二致,你可以用同样的方式来创建、编辑它们。PHP允许你直接在HTML文件里写入简单的脚本,这一点与Javascript非常相似。而不同的是,PHP不依赖于浏览器,是服务器端的语言,而Javascript却是一种客户端的嵌在HTML中的语言。概念上,PHP与Netscape的LiveWire Pro产品,Microsoft的ASP以及SunMicrosystem 的JSP相似。

 

PHP不仅可以用来创建Web应用程序,也可以用来开发普通的单机应用程序。

 

PHP的强劲之处在于:

·PHP是一项最优秀的技术。其它技术,如PERL,Python, Tcl, VB script, ASP 相对来说,都是陈旧低劣的。即使是Java/JSP,也在PHP之下。

·开放源码

·广泛的数据库连接

·大量的扩展库

·作为一种多用途的脚本语言,比PERL,VB script, ASP, JSP都要优秀。

 

为什么选择PHP?因为PHP是最好的,原因如下:

·PERL“味道不好”,因为其程序不易阅读和维护,且不是面向对象的。把PERL忘了,转向PHP吧。PERL程序员将抛弃PERL,因为他们爱上了PHP! PHP实际上就是“现代版的PERL”,只是名称不同而已。

·Java 是面向对象的,但速度很慢。Java程序远行起来很慢,对它唯一的抱怨就是——“Java,真是慢的糟糕”。而且十分复杂(具有许多层,如JVM,JIT 等等)。这往往诱发问题。既然有了Linux,为什么还要Java呢?

·Python“不错”,但没有C语言中的括号和大括号,而这在vi编辑器中对操控代码非常有用。如果不能利用vi/emacs编辑器搜索括号/大括号的命令迅速操控代码,那么就好象断了手一样。PHP在技术上比Python更加先进。

·PHP是最好的,因为它面向对象,并且吸收了C/C++/Java/PERL的精华。PHP可以替代PERL,Python, Java, C, C++, awk, Unix shell 脚本,Visual Basic 和其它语言!!

PHP直接运行,而且是由C写成的。

·每一个电脑程序员都知道PHP是最好的,不信问一下你旁边的程序员。

·只有PHP才能称雄于21世纪、22世纪以及更远的将来。

·为什么我们认为PERL,Python和Java程序员会将归附PHP,这里有一个很重要的原因。

 

以前,世界上许多公司都把PHP当作是一个“高度机密,严格保密”的电脑程序语言,但是现在它已经变成最为著名的,在Web, Internet, E-commerce以及 B2B等诸多项目上应用最广泛的面向对象的脚本语言。即使是在今天,仍有许多竞争性(competing)公司把PHP当作是高度机密的东西,决不向外界(竞争对手)透露半点。

 

PHP将如同暴风雨一般席卷整个世界,IT工业将为之震惊。PHP的力量在于它是跨平台的,可以运行在任何地方。如Linux,Windows 95/98/NT/2000/XP, Solaris, HPUX 以及各种UNIX。PHP只需写一次,就可以配置在任何地方。PHP可以运行在Apache,Microsoft IIS等多种Web服务器上。

 

PHP比Java快5到20倍!!实际的比较测试显示,PHP的运行速度是Java3.7倍左右。PHP太容易使用了,你可以用它在非常短的时间里,非常迅速的开发出非常复杂的web,e-commerce和一般的单机应用程序。(在将来,PHP将会模仿Java大多数的功能,相信Java程序员也会喜欢上它。PHP将包含Java中的关键字,如class, extends,interface, implements, public,protected, private 等等等等。)

 

PHP具有面向对象特性,它吸收了Java, C++, PERL 和C的最优秀的部分。PHP可以说是所有脚本/编程语言中的宝石。不久,它就会成为全世界程序员的“麦加圣地”。PHP即可以运行在Window95/NT/2000/XP上,也可以运行在各种UNIX上。

 

我们将大吃一惊——PHP极有可能成为21世纪的电脑编程语言。

 

可以使用Zend Optimizer对PHP进行编译和优化,从而使它运行的更快。PHP4.0中已经集成了Zend Optimizer。 首先,你在开发、测试、除错过程中,用PHP脚本语言编写你的应用程序。一旦项目完成,你便可以用Zend编译器,将PHP文件编译成运行速度更快的可执行程序。

对于电子商务项目,你一般需要综合使用PHP(70%),HTML/DHTML/XML(25%)和5%的Javascript(客户端验证)。

                       
 


 eclipse 回复于:2002-05-31 16:19:02
PHP,21世纪的霸主(之2)    cyman20(翻译) 
  
关键字     php 
  
出处     http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/PHP-HOWTO.pdf 
  

  
2.PHP可运行在Microsoft Windwos上!!

PHP最初是运行在UNIX平台上的,但是它的移植性很好,也可运行在Windows和IIS Web服务器之上。今天,已有了一大批基于Windows 2000/NT/95/98的PHP用户,你可以找到大量运行于Windows平台之上的PHP工具。

许多PHP程序员喜欢在Windows上开发他们的程序,完成后再配置在大型的Linux服务器上,如运行Linux的IBM小型机、Compaq DEC Alpha 以及 Sun sparc。

PHP最大的优势在于,它也可以运行在UNIX/Linux之上,UNIX上的开发者可以为MS Windows下的PHP用户服务,而Windows下开发的PHP代码也可以不经过任何改变,就用于UNIX/Linux上。

PHP自身完全是由C语言写成的,因此可广泛运行于各种平台之上,如BeOS,UNIX, MS Windows, Apple Macintosh,IBM OS/2 以及其它更多的操作系统。

PHP 运行速度非常快,要比Java快出许多。对于Web开发而言,不如忘了Java/JSP吧!PHP,PHP,到处都将是PHP! PHP也也将变成一种多用途的面向对象的脚本语言。

3.PHP下载

·PHP主站点:http://www.php.net

·PHP资源:http://ils.unc.edu/web-db/php/links.html

·PHP代码交换:http://px.sklar.com

·Vex Net:http://www.vex.net/php

在许多国家都有镜像站点,网址是www.COUNTRYCODE.php.net,其中COUNTRYCODE可以是us,fe,,sk等等。

    · http://www.fe.de.php.net 

· http://www.sk.php.net 

·http://php.iquest.net/ 

·答疑邮件地址: rasmus@lerdorf.on.ca 

3.1 PHP在Microsoft Windows 95/98/NT/2000上的安装

PHP在Microsoft Windows平台上极受欢迎,而且另人惊奇的是,它比Microsoft自己的Web脚本语言还要流行。原因在于PHP是面向对象的脚本语言,而ASP却不是。PHP具有大量可重用的类(对象),在Windows平台上,PHP要比ASP快许多,而且比ASP具有更多的功能和特色。PHP比ASP更健壮,更可靠,更具威力。由于PHP可运行于MS Windows,Linux, Mac OS和所有的UNIX,所以它具有一个庞大的用户群。而其最大的优势在于,你可以在Windows上开发程序,然后配置在UNIX/Linux上,反之亦然。

Windows98/NT/2000下的PHP用户比其它操作系统都要多,那是因为在Windows98/NT/2000上安装PHP很简单。PHP有可执行的安装程序,你只要双击exe文件,2分钟内就可以自动安装好。可从如下站下载可执行的PHP安装程序:

·Windows下的PHP可执行安装程序:http://php.weblogs.com/easywindows

·Windows平台下的PHP资料:http://php.weblogs.com

·PHP在Windows下的安装与配置:

http://www.php.net/manual/install-windows95-nt.php

· PHP Triad可以在Windows平台上安装完整的PHP服务环境:

http://www.phpgeek.com

 

3.2在Windows 95/98/NT/2000上快速安装Apache Web服务器(10秒钟)

在Windows上运行PHP,你需要一个Web服务器,你可以使用微软的IIS,也可以使用免费的Apache 。因为可以通过Apache的安装文件setup.exe进行安装,可以为你节省许多时间。

PHPTtriad是一个包括Apache、PHP、MySQL的软件包,可从http://www.phpgeek.com/phptriad.php 或其镜像站点http://sourceforge.net/projects/phptriad

下载。我强烈推荐使用PHPTtriad,它在Windows用户中极受欢迎(已被下载了几百万次)。

Apache 二进制程序: -http://httpd.apache.org/dist/httpd/binaries/win32

 

3.3 微软的SQL服务器

SQL服务器可以安装在不需要运行Windows的机器上,而你也需要一个SQL服务器来作Web开发。我推荐你在很老的PC上(如Pentium或486)安装Redhat Linux和PostgreSQL RPMs。你数据库并不需要任何Windows图形界面,可以在控制台直接启动PostgreSQL。PostgreSQL

的速度大概是Oracle和MS SQL server的3倍。

PHP的PostgreSQL支持库是由Adam Sussman编写的,他的邮件地址是:asussman@vidya.com

支持Windows NT/2000的PostgreSQL可从http://www.askesis.nl下载。

可从http://www.geocities.com/alavoor/HOWTO/pgsql/PostgreSQL-HOWTO.html 获取PostgreSQL的使用指南。

 

3.4 PHP在UNIX和其它操作系统上的安装

参见PHP主站点www.php.net上的安装指南和说明,或所下载的软件包中的INSTALL文件。
 



 zyme 回复于:2002-06-01 21:48:45
这也是www.csdn.net里摘来的了!

 jerryesquire 回复于:2002-06-03 11:34:00
faint!

 redfox 回复于:2002-06-04 16:54:23
php突出特点就是一个字:快!

 jerryesquire 回复于:2002-06-06 14:20:32
php只适合于中小站点应用!

 周小路 回复于:2002-06-11 10:14:46
我看了

 系统工程师 回复于:2002-06-16 02:06:09
  呵呵  。。。太夸张了。。。php只是一种脚本语言,不能编译的。。。

 你能用它来写OS吗?

 redfox 回复于:2002-06-16 13:44:21
目前还不行。

 eclipse 回复于:2002-06-16 19:05:47
这个德国人不正是说将来就可以编译了吗,并且会完善到。。。。。程度的



 windlike 回复于:2003-05-05 08:57:04
好多人都说PHP最大的一个优点就是数据库功能十分强大,便洁易用是它的特长。可是它的确是仅适用于中小型网站,另外它的安全性也不是很高呀,在这方面可能不如Asp的。
    不过PHP在21世际的发展形势可真是好的很呀。

 wolf2602 回复于:2003-05-17 20:48:08
嗯,有机会学学!

 信天翁 回复于:2003-06-15 14:46:31
初探 PHP5 (一)
 --------------------------------------------------------------------------------
 
作者:Luis Argerich 翻译:Avenger 来源:PHPBuilde 
虽然 PHP5 还没有正式发布(开发版本已经提供下载),但我们现在就可以开始体验一下新的版本 将要带给我们的惊喜。在以下的介绍中,我们将重点讲述 PHP5 中的三大特色功能。这三大特点为:

* 新的对象模式 (New Object Mode)
* 异常处理 (Exceptions)
* 名称空间 (Namespace)

在开始之前,要声明两点:

* 文章中的例子为了说明如何操作,有些部分使用了 PHP4 的表现手段,这仅仅是为了提高文章的可读性。
* 文章中描述的部分与 PHP5 的最终发布版可能会有一些出入

在 PHP5 没有最终正式发布前,你可以随时从 http://snaps.php.net 下载到最新的编译版本来亲自体验一下 PHP5 所带给我们这些崭新的功能。


新的对象模式

PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 PHP5 之旅的一个新起点吧。:)

* 构造函数和析构函数
* 对象的引用
* 对象的克隆
* 对象中的私有、公共及受保护模式
* 接口 (Interfaces)
* 抽象类
* __call
* __set 和 __get
* 静态成员


构造函数和析构函数

在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。
在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。

例一:构造函数和析构函数

<?php
class foo {
  var $x;
  function __construct($x) {
    $this->x = $x;
  }
  function display() {
    print($this->x);
  }
  function __destruct() {
    print("bye bye");
  }
}
$o1 = new foo(4);
$o1->display();
?>
在上面的例子中,当你终止调用 foo 类的时候,其析构函数将会被调用,上例中会输出 “bye bye”。


 对象的引用

众所周知,在PHP4 中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号 “&” 来声明是要做一个引用,而不是一个 Copy。在 PHP5 中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。

例二:对象的引用


<?php
class foo {
  var $x;
  function setX($x) {
    $this->x = $x;
  } 
  function getX() {
    return $this->x;
  }
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1;
$o1->setX(5);
if($o1->getX() == $o2->getX()) print("Oh my god!");
?>

 对象的克隆

如上所述,当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。

例三:对象的克隆 
<?php
class foo {
  var $x;
  function setX($x) {
    $this->x = $x;
  } 
  function getX() {
    return $this->x;
  }

$o1 = new foo;
$o1->setX(4);
$o2 = $o1->__clone();
$o1->setX(5); if($o1->getX() != $o2->getX()) print("Copies are independant");
?>
对象克隆的方法在其它很多应用程序语言中都是存在的,所以你不必担心它的稳定性。:)


 对象中的私有、公共及保护模式

PHP4 中,一个对象的所有方法和变量都是公共的,这意味着你可以在一个对象的外部操作其中的任意一个变量和方法。PHP5 引入了三种新的用来控制这种存取权限的模式,它们是:公共的(Public)、受保护的(Protected)及私有的(Private)。

公共模式(Public):允许在对象外部进行操作控制。
私有模式(Private):只允许本对象内的方法对其进行操作控制。
受保护模式(Protected):允许本对象及其父对象对其进行操作控制。

例四: 对象中的私有、公共及受保护模式

<?php
class foo {
  private $x;
  public function public_foo() {
    print("I'm public");
  }
  protected function protected_foo() {
    $this->private_foo(); //Ok because we are in the same class we can call private methods
    print("I'm protected");
  } 
  private function private_foo() {
    $this->x = 3;
    print("I'm private");
  }
}
class foo2 extends foo {
  public function display() {
    $this->protected_foo();
    $this->public_foo();
    // $this->private_foo();  // Invalid! the function is private in the base class
  }
} $x = new foo();
$x->public_foo();
//$x->protected_foo();  //Invalid cannot call protected methods outside the class and derived classes
//$x->private_foo();    //Invalid private methods can only be used inside the class $x2 = new foo2();
$x2->display();
?>
提示:对象中的变量总是以私有形式存在的,直接操作一个对象中的变量不是一个好的面向对象编程的习惯,更好的办法是把你想要的变量交给一个对象的方法去处理。


 接口 (Interfaces)

众所周知,PHP4 中的对象支持继承,要使一个对象成为另一个对象的派生类,你需要使用类似 “class foo extends parent” 的代码来控制。 PHP4 和 PHP5 中,一个对象都仅能继承一次,多重继承是不被支持的。不过,在 PHP5 中产生了一个新的名词:接口,接口是一个没有具体处理代码的特殊对象,它仅仅定义了一些方法的名称及参数,此后的对象就可以方便的使用 'implement' 关键字把需要的接口整合起来,然后再加入具体的执行代码。

例五:接口 

<?php
interface displayable {
  function display();
}
interface printable {
  function doprint();


class foo implements displayable,printable {
  function display() {
    // code
  }   function doprint() {
    // code
  }
}
?>
这对提高代码的可读性及通俗性有很大的帮助,通过上面的例子可以看到,对象 foo 包含了 displayable 和 printable 两个接口,这时我们就可以清楚的知道,对象 foo 一定会有一个 display() 方法和一个 print() 方法,只需要去了解接口部分,你就可以轻易的操作该对象而不必去关心对象的内部是如何运作的。

 信天翁 回复于:2003-06-15 14:47:23
初探 PHP5 (二)
--------------------------------------------------------------------------------
 
作者:Luis Argerich 翻译:Avenger 来源:PHPBuild 

 抽象类

抽象类不能被实例化。
抽象类与其它类一样,允许定义变量及方法。
抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。

例六:抽象类

<?php
abstract class foo {
  protected $x;
  abstract function display();
function setX($x) {
    $this->x = $x;
  }

class foo2 extends foo {
  function display() {
    // Code
  }
}
?>

 __call

PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。

例七:__call

<?php
class foo {
  function __call($name,$arguments) {
    print("Did you call me? I'm $name!");
  }
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>
这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。

例八:使用 __call 实现“过载”动作

<?php
class Magic {
  function __call($name,$arguments) {
    if($name=='foo') {
      if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);
      if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
    }
  }   private function foo_for_int($x) {
    print("oh an int!");
  }   private function foo_for_string($x) {
    print("oh a string!");
  }
} $x = new Magic();
$x->foo(3);
$x->foo("3");
?>

> __set 和 __get

这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。

例九: __set 和 __get

<?php
class foo {
  function __set($name,$val) {
    print("Hello, you tried to put $val in $name");
  }
  function __get($name) {
    print("Hey you asked for $name");
  }
}
$x = new foo();
$x->bar = 3;
print($x->winky_winky);
?>

 类型指示

在 PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。

例十:类型指示

<?php
class foo {
  // code ...
}
class bar {
  public function process_a_foo(foo $foo) {
   // Some code
  }
}
$b = new bar();
$f = new foo();
$b->process_a_foo($f);
?>
可以看出,我们可以显性的在参数前指明一个对象的名称,PHP5 会识别出这个参数将会要是一个对象实例。


 静态成员

静态成员和静态方法在面象对象编程的术语中被称作 “对象方法(class methods)” 和 “对象变量(class variables)”。
“对象方法” 在一个对象没有实例化前允许被调用。同样,“对象变量” 在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。

例十一:对象方法和对象变量

<?php
class calculator {
  static public $pi = 3.14151692;
  static public function add($x,$y) {
    return $x + $y;
  }
}
$s = calculator::$pi;
$result = calculator::add(3,7);
print("$result");
?>

 异常处理

异常处理是公认的处理程序错误的理想方法,在 Java 及 C++ 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。

例十二:异常处理

<?php
class foo {
  function divide($x,$y) {
    if($y==0) throw new Exception("cannot divide by zero");
    return $x/$y;
  }
}
$x = new foo();
try {
  $x->divide(3,0);   
} catch (Exception $e) {
    echo $e->getMessage();
    echo "n<br />n";
    // Some catastrophic measure here
}
?>
上例中,我们使用了 “try” 来执行花括号中的语句,当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。


 自定义错误处理

你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法,以下是一个例子。

例十三:自定义错误处理

<?php
class WeirdProblem extends Exception {
   private $data;
   function WeirdProblem($data) {
        parent::exception();
        $this->data = $data;
    }
    function getMessage() {
        return $this->data . " caused a weird exception!";
    }
}
?>
现在我们可以使用 “throw new WeirdProblem($foo)” 来抛出一个错误句柄,如果错误在 “try” 的代码块中发生,PHP5 会自动把错误交给 “catch” 部分来处理。


 名称空间

名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。

例十四:名称空间

<?php
namespace Math { 
  class Complex {
    //...code...
    function __construct() {
      print("hey");
    }
  }
} $m = new Math::Complex();
?>
注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。

译者注:本篇文章来自 PHPbuilder,从以上文字中我们高兴的看到 PHP5 中新增加的一些优秀的功能。我们还可以看到一些 Java 和 C++ 的影子,现在的 PHP5 还没有正式发布,等到真正发布那一天,希望能再带给所有的 PHP 爱好者更多的惊喜。对这方面比较感兴趣的朋友可以登录 PHP 官方新闻组去了解更新情况。新闻组地址为 news://news.php.net ,也可以登录WEB界面 http://news.php.net 来访问。让我们一起来期待新版本的发布吧。:)(超越PHP Avenger)

 tmdxy 回复于:2005-08-18 02:42:45
^_^
你去看看python,保证你会更喜欢python。。。

原文转自:http://www.ltesting.net