2007年3月20日星期二

PHP 安装

PHP 安装
这篇文章为新手准备。
其实详细信息PHP安装文档中都已经详细说明了。

  1. Unix下安装:

    1. gzip -d httpd-2_0_NN.tar.gz
    2. tar xvf httpd-2_0_NN.tar
    3. gunzip php-NN.tar.gz
    4. tar -xvf php-NN.tar
    5. cd httpd-2_0_NN
    6. ./configure --enable-so
    7. make
    8. make install

    现在已经将 Apache 2.0.NN 安装在 /usr/local/apache。本安装支持可装载模块
    和标准的 MPM prefork。之后,可以使用如下命令启动 Apache 服务器:
    /usr/local/apache2/bin/apachectl start
    如果成功,可以停止 Apache 服务器并继续安装 PHP:
    /usr/local/apache2/bin/apachectl stop.

    9. cd ../php4-NN

    10. 现在需要配置 PHP。在这里可以用各种各样的参数来自定义PHP,例如启动哪些
    扩展功能包的支持等。用 ./configure --help 命令可以列出当前可用的所有参
    数。在此例中,将给出一个在有 MySQL 支持的 Apache 2 上进行配置的范例。
    用户本地的 apxs 的路径可能会不同,事实上,在用户的系统中,它可能被命名为
    apxs2。

    ./configure --with-apxs2=/usr/local/apache2/bin/apxs

    11. make
    12. make install

    如果决定在安装后改变配置选项,只需重复最后的三步,然后需要重新启动 Apache
    使新模块生效。无需重新编译。

    请注意,除非明确有提示,否则“make install”命令将安装 PEAR、各种 PHP 工具
    诸如 phpize,安装 PHP CLI 等等。

    13. 配置 php.ini

    cp php.ini-dist /usr/local/lib/php.ini

    可以编辑 php.ini 文件以修改 PHP 的选项。如果想要把此文件放到另外的位置,
    需要在步骤 10 添加 --with-config-file-path=/path 选项。

    如果选择 php.ini -recommended,请务必阅读其中的变更的列表,它们将影响
    PHP 的执行。

    14. 编辑 httpd.conf 文件以调用 PHP 模块。LoadMolude 表达式右边的路径必须指向
    系统中的 PHP。以上的 make install 命令可能已经完成了这些,但务必要检查。

    对于 PHP 4:
    LoadModule php4_module modules/libphp4.so

    对于 PHP 5:
    LoadModule php5_module modules/libphp5.so

    15. 告知 Apache 将特定的扩展名解析成 PHP,例如,让 Apache 将扩展名 .php
    解析成 PHP。可以将任何扩展名指定为 PHP,只需添加它们,每一个用空格分隔。
    例如,要添加 .phtml:

    AddType application/x-httpd-php .php .phtml

    通常还将 .phps 扩展名设置成显示高亮的 PHP 源文件,可以这样来完成:

    AddType application/x-httpd-php-source .phps

    16. 启动 Apache 服务器:
    /usr/local/apache2/bin/apachectl start


  2. Windows下安装:
    将以下两行加入到 Apache 的 httpd.conf 配置文件中设定 Apache 2.0 的 PHP 模块

    # 对 PHP 4 用这两行:
    LoadModule php4_module "c:/php/php4apache2.dll"
    # 别忘了从 sapi 目录中把 php4apache2.dll 拷贝出来!
    AddType application/x-httpd-php .php

    # 对 PHP 5 用这两行:
    LoadModule php5_module "c:/php/php5apache2.dll"
    AddType application/x-httpd-php .php

    # 配置 php.ini 的路径
    PHPIniDir "C:/php"




参考资料:
http://www.php.net/manual/zh/install.php

2007年3月18日星期日

概念: 构造函数和析构函数

构造函数和析构函数
构造函数
void __construct ( [mixed args [, ...]] )

PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

注: 如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。

例子 19-6. 使用新标准的构造函数
<?php
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}

class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}

$obj = new BaseClass();
$obj = new SubClass();
?>


为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法,但它却又不是构造函数。
析构函数
void __destruct ( void )

PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

例子 19-7. 析构函数示例
<?php
class MyDestructableClass {
function __construct() {
print "In constructor\n";
$this->name = "MyDestructableClass";
}

function __destruct() {
print "Destroying " . $this->name . "\n";
}
}

$obj = new MyDestructableClass();
?>


和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。

注: 析构函数在脚本关闭时调用,此时所有的头信息已经发出。

注: 试图在析构函数中抛出一个异常会导致致命错误。