【PHP8.x】addメソッドの使い方
addメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
addメソッドは、DateTimeオブジェクトが示す日付と時刻に、指定した期間を加算するために実行するメソッドです。このメソッドは、引数として「期間」を表すDateIntervalオブジェクトを受け取ります。addメソッドを呼び出すと、元のDateTimeオブジェクトの値が直接変更され、加算後の日時に更新されます。新しいオブジェクトを生成するのではなく、呼び出し元のオブジェクト自体を書き換えるという点が特徴です。処理が成功すると、変更されたDateTimeオブジェクト自身が返され、失敗した場合はfalseが返ります。例えば、「2025年10月31日」を表すDateTimeオブジェクトに、「1ヶ月と5日間」の期間を持つDateIntervalオブジェクトを渡してこのメソッドを実行すると、元のオブジェクトは「2025年12月5日」に更新されます。このように、特定の日付を基準として未来の日付や時刻を正確に算出する際に使用される、基本的ながらも非常に重要なメソッドです。
構文(syntax)
1<?php 2 3// 元となる日付のオブジェクトを作成します。 4$date = new DateTime('2023-10-26'); 5 6// 加算する期間(この例では10日間)のオブジェクトを作成します。 7$interval = new DateInterval('P10D'); 8 9// addメソッドで、日付オブジェクトに期間オブジェクトを加算します。 10$date->add($interval); 11 12// 結果を 'Y-m-d' 形式の文字列で出力します。 13echo $date->format('Y-m-d'); 14 15?>
引数(parameters)
DateInterval $interval
- DateInterval $interval: 追加する期間を指定するDateIntervalオブジェクト
戻り値(return)
DateTime
指定されたDateTimeオブジェクトに指定された期間を加算した新しいDateTimeオブジェクトを返します。
サンプルコード
addslashesで文字列をエスケープする
1<?php 2 3/** 4 * addslashes() 関数の動作を確認するサンプルコード 5 * 6 * この関数は、シングルクォート、ダブルクォート、バックスラッシュ、NUL文字の前に 7 * バックスラッシュを追加して文字列をエスケープします。 8 */ 9function demonstrateAddslashes(): void 10{ 11 // エスケープ対象の文字列を準備 12 $string1 = "It's a beautiful day."; // シングルクォートを含む 13 $string2 = 'He said, "Hello World!"'; // ダブルクォートを含む 14 $string3 = 'C:\Users\John'; // バックスラッシュを含む 15 16 // addslashes() を使って各文字列をエスケープ 17 $escapedString1 = addslashes($string1); 18 $escapedString2 = addslashes($string2); 19 $escapedString3 = addslashes($string3); 20 21 // 結果を出力して比較 22 echo "Original 1 : " . $string1 . PHP_EOL; 23 echo "Escaped 1 : " . $escapedString1 . PHP_EOL; 24 echo PHP_EOL; 25 26 echo "Original 2 : " . $string2 . PHP_EOL; 27 echo "Escaped 2 : " . $escapedString2 . PHP_EOL; 28 echo PHP_EOL; 29 30 echo "Original 3 : " . $string3 . PHP_EOL; 31 echo "Escaped 3 : " . $escapedString3 . PHP_EOL; 32} 33 34// 関数を実行 35demonstrateAddslashes(); 36 37?>
このPHPコードは、addslashes() 関数の基本的な使い方を示すサンプルです。addslashes() は、引数として受け取った文字列の中に含まれる特定の文字を「エスケープ」処理するための関数です。エスケープとは、シングルクォート(')、ダブルクォート(")、バックスラッシュ(\)といった、プログラム上で特別な意味を持つ可能性のある文字の前に、バックスラッシュを追加してその特殊な意味を打ち消す処理を指します。
このサンプルコードでは、まずシングルクォート、ダブルクォート、バックスラッシュをそれぞれ含む3つの異なる文字列($string1、$string2、$string3)を準備しています。次に、これらの文字列を addslashes() 関数に渡しています。関数は、エスケープ処理を行った新しい文字列を戻り値として返し、それを $escapedString1 などの新しい変数に代入しています。
最後に、echo を使って処理前の元の文字列と、addslashes() によってエスケープされた後の文字列を並べて出力しています。これにより、各記号の前にバックスラッシュが正しく追加されていることを視覚的に確認できます。
addslashes()関数は、データベースへのクエリに使われる文字列をエスケープする目的での使用は現在強く非推奨です。この関数だけでは、SQLインジェクションと呼ばれるセキュリティ上の脆弱性を完全に防ぐことができないためです。データベースを安全に操作するためには、PDOやMySQLiが提供するプリペアドステートメントとプレースホルダの使用が必須です。これにより、SQL文とデータが安全に分離され、意図しないコードの実行を防ぐことができます。この関数は、特定のファイル形式へデータを書き込むなど、ごく限定的な用途でのみ利用を検討してください。