3. 複雑な文字列内の変数を解析する場合、php5 は次のようにオブジェクトのメソッド属性を解析できます。 ;
4. PHP5 では、次のような構築およびデストラクターのマジック関数を使用できます:
print " . $this->name .
php5 は pdo など、php4 に多くの機能を追加します。php6 にはさらに多くの拡張機能が追加される可能性があります (php6 はまだ試していません)。php はますます強力になり、WEB ベースの開発に適したものになると思います。
1. 100% 下位互換性はありません
文字列オフセットを不正に使用すると、E_WARNING ではなく E_ERROR が発生します。不正な使用例: $str = ‘abc’; unset($str[0]);
array_merge() は配列のみを受け入れるように変更されました。非配列変数が渡されると、そのような引数ごとに E_WARNING メッセージが生成されます。コードによっては E_WARNING が異常終了する可能性があるので注意してください。
PATH_TRANSLATED サーバー変数は、Apache2 SAPI では暗黙的に設定されなくなりました。これは、Apache がこの値を生成しなかった場合に SCRIPT_FILENAME サーバー変数と同じ値に設定されていた PHP 4 の状況とは対照的です。この修正は CGI 仕様に準拠するためのものです。詳細については、マニュアルの $_SERVER['PATH_TRANSLATED'] の説明を参照してください。この問題は、PHP 4.3.2 以降のバージョンにも影響します。
トークナイザー拡張機能は T_ML_COMMENT 定数を定義しなくなりました。 error_reporting が E_ALL に設定されている場合、PHP はメッセージを生成します。 T_ML_COMMENT は使用されたことはありませんが、PHP 4 で定義されています。 PHP 4 および PHP 5 では // およびは T_COMMENT 定数に解決されます。ただし、PHP 5 以降の PHP によって解析される PHPDoc スタイルのコメントは、T_DOC_COMMENT として認識されます。
variables_order に "S" が含まれる場合、argc と argv を使用して $_SERVER を生成する必要があります。ユーザーが $_SERVER を作成しないようにシステムを具体的に設定した場合、当然、この変数は存在しません。変更点は、variables_order の設定に関係なく、CLI バージョンでは argc と argv が常に使用できることです。もともと、CLI バージョンではグローバル変数 $argc および $argv が常に生成されるわけではありません。
場合によっては、使用前にクラスを定義する必要があります。これは、一部の新しい PHP 5 機能 (インターフェイスなど) を使用する場合にのみ発生します。他の場合では、動作は変わりません。
get_class()、get_parent_class()、および get_class_methods() は、定義時と同じクラス/メソッド名を返すようになりました (大文字と小文字が区別されます)。これは、以前の動作に依存する古いスクリプトで発生する可能性があります (クラス/メソッド名は常に返されます)。小文字)質問です。考えられる回避策は、スクリプト内でこれらすべての関数を検索し、strto lower() を使用することです。
大文字と小文字の区別の変更は、マジック定数 __CLASS__、__METHOD__、__FUNCTION__ にも適用されます。その値は、定義時の名前に従って厳密に返されます (大文字と小文字は区別されます)。
インクルードファイルに関数が定義されている場合、return() ディレクティブの前後に関係なく、これらの関数をメインファイルで使用できます。 PHP 5 では、関数がすでに定義されているため、ファイルが 2 回インクルードされると致命的なエラーが発行されますが、PHP 4 ではこれを気にしません。したがって、ファイルがインクルードされているかどうかを確認し、インクルードされたファイルを条件付きで返すのではなく、 include_once() を使用することをお勧めします。
include_once() と require_once() は最初に Windows でパスを正規化するため、A.php と a.php をインクルードしてもファイルは 1 回だけインクルードされます。
//エラーなしで動作します:
$a = new a();
class a {
}
// エラーをスローします:
$a = new b();
interface c{
}
class b は c {
} を実装します
;
2. CLI と CGI
PHP 5 では CLI と CGI のファイル名にいくつかの変更が加えられました。 PHP 5 では、CGI バージョンの名前が php-cgi.exe (以前の php.exe) に変更され、CLI バージョンの名前がホーム ディレクトリ (以前の cli/php.exe) に置かれるようになりました。
PHP 5 では、php-win.exe という新しいモードが導入されました。これは CLI バージョンと同じですが、php-win は何も出力しないため、コンソールが提供されません (画面上で「dos ウィンドウ」が点滅しません)。この動作は php-gtk に似ています。
PHP 5 では、php.ini の設定に関係なく、CLI バージョンは常にグローバル変数 $argv と $argc を生成します。 register_argc_argv を off に設定しても、CLI には影響しません。
「コマンドラインモード」を参照してください。
3. 設定ファイルを移行する
ISAPI モジュールの名前が php4xxx から php5xxx に変更されたため、設定ファイルにいくつかの変更を加える必要があります。 CLI および CGI のファイル名も変更されました。詳細については、対応する章を参照してください。
Apache 構成の移植は非常に簡単です。以下の例に従って、必要な変更を確認してください:
例: Apache 構成ファイルを PHP 5 に移植する
# 次の行を変更します: LoadModule php4_module /php/sapi/php4apache2.dll # この行に変更します: LoadModule php5_module / php/php5apache2 .dll
Web サーバーが CGI モードで PHP を実行している場合、CGI バージョンの名前が php.exe から php-cgi.exe に変更されていることに注意してください。 Apache では、次のように変更する必要があります:
例: Apache 構成ファイルを PHP 5、CGI モードに移植する
# 次の行を変更します: Action application/x-httpd-php "/php/php.exe" # に変更しますこの行: Action application/x-httpd-php "/php/php-cgi.exe"
他の Web サーバーでは、CGI または ISAPI モジュールの名前を変更する必要があります。
4. 新機能
PHP 5 にはいくつかの新機能があります。リストは次のとおりです:
配列:
array_combine() - 1 つの配列をキーとして、別の配列を値として使用して新しい配列を作成します。
array_diff_uassoc() - 配列の差分を計算し、ユーザー指定のインデックスを使用して追加のインデックス チェックを実行します。コールバック関数
array_udiff() - コールバック関数でデータを比較して配列の差分を計算します。
array_udiff_assoc() - 配列の差分を計算し、追加のインデックス チェックを実行します。コールバック関数を使用してデータを比較します
array_udiff_uassoc() - 配列の差分を計算し、追加のインデックス チェックを行います。データの比較とインデックスのチェックは、コールバック関数を使用して行われます。
array_walk_recursive() - 配列の各メンバーに対してユーザー関数を再帰的に使用します。
array_uintersect_assoc() - 配列の交差部分を計算し、追加のインデックス チェックを行います。コールバック関数を使用してデータを比較します
array_uintersect_uassoc() - 配列の共通部分を計算し、追加のインデックス チェックを行います。データとインデックスの両方は、コールバック関数
array_uintersect() を使用して比較されます - 配列の共通部分を計算します。用回调函数来比较数据
InterBase:
ibase_affected_rows() - 返回前一个查询影响到的行的数目
ibase_backup() - 在服务管理器中发起一个后台任务并立即返回
ibase_commit_ret() - 提交一个事务但不关闭
ibase_db_info() - 请求有关数据库的统计信息
ibase_drop_db() - 删除一个数据库
ibase_errcode() - 返回一个错误代码
ibase_free_event_handler() - 取消一个已注册的事件句柄
ibase_gen_id() - 递增指定的发生器并返回其新值
ibase_maintain_db() - 在数据库服务器上执行一条维护命令
ibase_name_result() - 给结果集指定一个名字
ibase_num_params() - 返回一个准备好的查询的参数数目
ibase_param_info() - 返回一个准备好的查询的参数信息
ibase_restore() - 在服务管理器中发起一个还原任务并立即返回
ibase_rollback_ret() - 回卷一笔事务并保留事务上下文
ibase_server_info() - 请求有关数据库服务器的统计信息
ibase_service_attach() - 连接到服务管理器
ibase_service_detach() - 从服务管理器断开
ibase_set_event_handler() - 注册一个当事件发布时要调用的回调函数
ibase_wait_event() - 等待数据库发布一条事件
iconv:
iconv_mime_decode() - 解码 MIME 头信息字段
iconv_mime_decode_headers() - 一次解码多个 MIME 头信息字段
iconv_mime_encode() - 压缩 MIME 头信息字段
iconv_strlen() - 返回字符串中的字符计数
iconv_strpos() - 在堆栈中找到第一个出现的子串位置
iconv_strrpos() - 在堆栈中找到最后一个出现的子串位置
iconv_substr() - 从字符串中取出一部分
Streams:
stream_copy_to_stream() - 把一个流的数据复制到另一个流
stream_get_line() - 根据给定的分隔符中流中读取一行
stream_socket_accept() - 接受一个由 stream_socket_server() 建立的 socket 连接
stream_socket_client() - 打开一个 Internet 或 Unix 域的 socket 连接
stream_socket_get_name() - 获取本地或远程的 sockets 名字
stream_socket_recvfrom() - 从 socket 获取数据(不管连接是否已经建立)
stream_socket_sendto() - 向 socket 发送一个消息(不管连接是否已经建立)
stream_socket_server() - 建立一个 Internet 或 Unix 域服务器的 socket
Date/Time:
idate() - 将本地进间格式化为整数
date_sunset() - 计算所指定日期和地点的日落时间
date_sunrise() - T计算所指定日期和地点的日出时间
time_nanosleep() - 廷迟执行程若干秒和若干纳秒
Strings:
str_split() - 把一个字符串分割为数组
strpbrk() - 在一字符串中搜索给定的字符集合中的任意一个字符
substr_compare() - 以二进制的形式比较两个字符串,从第一个字符串的 offset 开始,直到到达长度为 length 时结束,可自定义是否大小写敏感比较
Other:
convert_uudecode() - 解码 uuencoded 的字符串
convert_uuencode() - 对字符串进行 uuencode
curl_copy_handle() - 复制一个 cURL 句柄及其所有参数
dba_key_split() - 把一个键分隔为字符串数组
dbase_get_header_info() - 取得 dBase 数据库的头部信息
dbx_fetch_row() - 获取结果集中被设置为 DBX_RESULT_UNBUFFERED 的行
fbsql_set_password() - 修改指定用户的密码
file_put_contents() - 向一个文件内写入字符串
ftp_alloc() - 为准备上传的文件分配空间
get_declared_interfaces() - 以数组的形式返回所有已定义的接品
get_headers() - 获取服务器响应 HTTP 请求时的所有头部信息
headers_list() - 返回所有已发送或准备发送响应头部列表
http_build_query() - 生成一个已经过 URL 编码的请求字符串
image_type_to_extension() - 根据 getimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype() 所返回的 image-type 取得文件名后缀
imagefilter() - 对图像应用滤镜
imap_getacl() - 获取指定邮箱的 ACL
ldap_sasl_bind() - 使用 SASL 绑定到 LDAP 目录
mb_list_encodings() - 以数组的形式返回所支持的全部字符集
pcntl_getpriority() - 获得任意一个进程的优先级
pcntl_wait() - Waits on or returns the status of a forked child as defined by the waitpid() system call
pg_version() - 返回一个包含客户端、协议和服务器版本的数组
php_check_syntax() - 检查指定文件的语法
php_strip_whitespace() - 返回已经去除注释和空白的源代码
proc_nice() - 修改当前进程的优前级
pspell_config_data_dir() - 修改语言文件的位置
pspell_config_dict_dir() - 修改主要单词列表的位置
setrawcookie() - 发送一个没有经过 url 编码的 cookie 值
scandir() - 列中指定目录中的所有子目录和文件
snmp_read_mib() - 使用可能な MIB ツリー内の MIB ファイルを読み取り、分割します
sqlite_fetch_column_types() - テーブル内の列の型を配列形式で返します
注: Tidy 拡張ライブラリの API も大幅に調整されました
5新しいディレクティブ
PHP 5 では、php.ini にいくつかの新しいディレクティブが導入されています。リストは次のとおりです:
mail.force_extra_parameters - 指定されたパラメーターの追加値を強制的に追加パラメーターとして sendmail ライブラリに渡します。これらのパラメータは、セーフ モードであっても常に mail() の 5 番目のパラメータを置き換えます
register_long_arrays - PHP による古い $HTTP_*_VARS 変数の登録を許可/無効化します
session.hash_function - ハッシュ関数 (MD5 または SHA-1) を選択します
session .hash_bits_per_character - バイナリ ハッシュ データを読み取り可能な形式に変換するときに、文字ごとに格納されるビット数 (4 から 6) を定義します
zend.ze1_compatibility_mode - Zend Engline 1 世代 (PHP 4) 互換モードを有効にします
6. データベース
いくつかありますPHP 5 のデータベース (MySQL および SQLite) の変更。
MySQL クライアント接続ライブラリは、認証やその他の問題のため、PHP 5 にはバンドルされなくなりました。
新しい拡張ライブラリ MySQLi (MySQL の改良版) があり、MySQL 4.1 以降で動作するように設計されています。
PHP 5 以降、SQLite 拡張ライブラリが PHP に組み込まれています。 SQLite は埋め込み可能な SQL データベース エンジンであり、大規模なデータベース サーバー (MySQL や PostgreSQL など) に接続するために使用されるクライアント接続ライブラリではありません。 SQLite ライブラリは、ディスク上のデータベース ファイルを直接読み書きします。
7. 新しいオブジェクトモデル
PHP 5 には新しいオブジェクトモデル (オブジェクトモデル) があります。 PHP がオブジェクトを処理する方法が完全に書き直され、パフォーマンスが向上し、機能が追加されました。 PHP の以前のバージョンでは、オブジェクトはプリミティブ型 (整数や文字列など) と同じように扱われました。このメソッドの欠点は、変数に値が割り当てられるとき、またはパラメータとしてメソッドに渡されるときに、意味的にオブジェクト全体がコピーされることです。新しいアプローチでは、オブジェクトは値ではなくハンドルによって参照されます (ハンドルはオブジェクトの識別子であると考えてください)。
多くの PHP プログラマは、古いオブジェクト モデルのコピーの癖に気づいていないだけなので、ほとんどの PHP アプリケーションはそのまま、またはわずかな変更を加えるだけで実行できます。
新しいオブジェクト モデルのドキュメントについては、「クラスとオブジェクト」を参照してください。
PHPの基礎知識: PHP4とPHP5の設定の類似点と相違点の比較php4またはphp5を設定するプロセスにおいて、php4とphp5の設定手順はほぼ同じですが、いくつかの違いがあります。設定内容。 LINUX などの環境でコンパイルする場合、一般に、コンパイル オプションが正しい限り、設定は正しく行われますが、Windows で設定する場合は、次の違いに注意する必要があります:
1. php4ts.dll と php5ts。 dll コンテンツは China Webmaster Information Network (www.chinahtml.com) からのものです
このファイルは、Apache の bin ディレクトリまたはシステム ディレクトリにコピーする必要があります
2. httpd.conf ファイルによってロードされるモジュール
例は次のとおりです。次のように:
# PHP4 + apache1.x.xx の場合
LoadModule php4_module d:/www/webserver/php4/sapi/php4apache.dll
AddType application/x-httpd-php .php コンテンツは中国ウェブマスター情報ネットワーク ( www.chinahtml.com)
# PHP4 + apache2.x の場合。xx
LoadModule php4_module d:/www/webserver/php4/sapi/php4apache2.dll
AddType application/x-httpd-php .php
# ここで、d: /www/webserver/php4 は、php が配置されているディレクトリです。
# PHP5 + apache1.x.xx の場合
LoadModule php5_module d:/www/webserver/php5/php5apache.dll
AddType application/x-httpd-php .php
# PHP5 + apache2.x.xx の場合
LoadModule php5_module d:/www/webserver/php5/php5apache2.dll
AddType application/x-httpd-php .php
# ここで、d:/www/webserver/php5 は php が配置されているディレクトリです。
3. mysql をロードする方法が異なります
php4 以前のバージョンでは、mysql は php に統合されています。
PHP5 (ベータ版を含む) バージョンでは、mysql はモジュールとしてロードされ、php.ini を次のように設定する必要があります。たとえば、
extension_dir = "D:/www/WebServer/PHP5/ext/"
extension=php_mysql.dl l
さらに、PHP4 および PHP5 のバージョンでは、システム ディレクトリ内の libmysql.dll のサポートが必要です。は正しくありません。 extension_dir および php_mysql.dll パラメータを正しく設定しても、Apache の起動時に phpp_mysql.dll が見つからないというエラーが発生します。
http://www.bkjia.com/PHPjc/324637.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/324637.html技術記事 php4には静的メンバーがありません。php Webページのバックグラウンドでこのようなエラーが発生します。SubPages1.phpを確認しましたが、該当するエラーは見つかりませんでした。ウェブサイトはローカルでテストすると完全に正常で、スペースにアップロードされた後に表示されます...