システム開発スクール講座

システム制作やプログラミングの初心者向けシステム開発WEB講座スクール

DeprecatedでPHP5.3.x非推奨機能


プログラミングの学習環境をローカル環境に設置して、すこしづつシステム開発が身近になってきましたが、PHPの最新バーションをインストールした後に、PHPで構築されたCMSを実行したときに警告文がたくさん出現しました。


"Deprecated: Assigning the return value of new by reference is deprecated in..."

みたいに。


これはPHP5.3.xで実行された場合の警告文で、将来的にPHP6あたりでは使用されなくなる可能性のある記述がありますよということらしい。



対処策としては、まだまだプログラミング初心者なので、ソースコードを大幅に改修することが困難なので、PHPのバージョンを以前のものにダウングレードしました。



レンタルサーバーなどにおいて更新された場合はつらいでしょうね。


■Deprecatedとは

deprecated - 引用:スペースアルク

【形】《コ》〔仕様{しよう}などが〕廃止{はいし}される可能性{かのう せい}がある、廃止予定{はいし よてい}の、将来{しょうらい}のサポートが保証{ほしょう}されない(ので使用{しよう}すべきでない)、非推奨{ひ すいしょう}の◆仕様が改定されたが、後方互換のために以前の方式も当面使えるようにしてある場合など


まさに将来的に廃止の可能性があるというアラートですね。



以下、The PHP Groupサイトからの引用ですが、実にさまざまな"Deprecated"が記述されています。以前、このブログ講座でも学習した、"=&"参照代入演算子はphp4では有効ですが、php5では代入演算がなくなり"new"の戻り値は参照演算されるようになっていますので、アンバーサンドも将来的にエラー対象となるのでしょうか。



The PHP Groupサイト引用================================

PHP 5.3.x で推奨されない機能

PHP 5.3.0 では新しく二つのエラーレベルが加わりました。 E_DEPRECATED と E_USER_DEPRECATED です。 E_DEPRECATED エラーレベルは、 特定の機能が推奨されないことを示すのに使います。 E_USER_DEPRECATED エラーレベルは、ユーザー定義のコードで推奨されない機能、たとえば E_USER_ERROR や E_USER_WARNING のようなものを示すのに使います。

INI ディレクティブで推奨されないものは以下の通りです。 これらのひとつ以上を有効にすると、起動時 E_DEPRECATED エラーが発生します

■define_syslog_variables
register_globals
■register_long_arrays
■safe_mode
■magic_quotes_gpc
■magic_quotes_runtime
■magic_quotes_sybase
■'#' ではじまるコメントは .INI ファイルでは推奨されません。
推奨されない関数

■call_user_method() (かわりに call_user_func() を使用します)
■call_user_method_array() (かわりに call_user_func_array() を使用します)
■define_syslog_variables()
■dl()
■ereg() (かわりに preg_match() を使用します)
■ereg_replace() (かわりに preg_replace() を使用します)
■eregi() (かわりに preg_match() で 'i' 修正子を使用します)
■eregi_replace() (かわりに preg_replace() で 'i' 修正子を使用します)
■set_magic_quotes_runtime() およびそのエイリアスである magic_quotes_runtime()
■session_register() (かわりにスーパーグローバル $_SESSION を使用します)
■session_unregister() (かわりにスーパーグローバル $_SESSION を使用します)
■session_is_registered() (かわりにスーパーグローバル $_SESSION を使用します)
■set_socket_blocking() (かわりに stream_set_blocking() を使用します)
■split() (かわりに preg_split() を使用します)
■spliti() (かわりに preg_split() で 'i' 修正子を使用します)
sql_regcase()
mysql_db_query() (かわりに mysql_select_db() および mysql_query() を使用します)
mysql_escape_string() (かわりに mysql_real_escape_string() を使用します)
ロケールカテゴリ名を文字列で渡すこと。かわりに LC_* 系の定数を使用します。
■is_dst を mktime() に渡すこと。 かわりにタイムゾーン処理用の新しい関数を使用します。
推奨されない機能

■new の返り値を参照で代入すること
■呼び出し時の参照渡し
■{} を使用した文字列オフセットへのアクセス。 かわりに [] を使用します

【Copyright The PHP Group】