こんにちは!フリーエンジニアのせきです。
PHPでは、newというキーワードを使ってクラスを初期化します。
この記事では、
・newについて知りたい
・newの使い方について知りたい
という基本的な内容から、
・変数を初期化する方法を知りたい
・時刻を初期化する方法が知りたい
・DBを初期化する方法が知りたい
といった応用的な内容に関しても解説していきます。
今回はそんなnewの使い方について、わかりやすく解説します!
newとは
あるクラスのオブジェクトを生成し初期化するには、newを使用します。
class NewClass { // クラスの処理 } $instance = new NewClass();
このように記述すると、NewClassのオブジェクトが生成され、NewClassのコンストラクタが実行されます。
$instanceには、初期化されたNewClassのオブジェクトが代入されます。
クラスを初期化する
ここでは、newを使用してクラスを初期化する方法を解説します。
まずは、初期化するPersonクラスを定義します。
Personクラスはnameプロパティを持ち、nameの値はオブジェクト生成時に設定されるようになっています。showNameメソッドでは、そのnameの値を表示します。
次にnewを使用して、Personクラスのオブジェクトを生成します。
class Person { private $name; function __construct($n){ $this->name = $n; } function showName() { echo $this->name; } } $person1 = new Person('Tanaka'); $person1->showName(); echo '<br>'; $person2 = new Person('Suzuki'); $person2->showName();
Tanaka Suzuki
「new Person(‘Tanaka’)」で、nameプロパティに’Tanaka’を持つPersonクラスのオブジェクトが生成され、$person1に代入しています。
$person1のshowNameメソッドを呼び出すと、「Tanaka」が表示されます。
同様に、「new Person(‘Suzuki’)」でPersonクラスのオブジェクトを生成し、showNameメソッドでは「Suzuki」が表示されています。
時刻を初期化する
newを使用して、DateTimeクラスのオブジェクトを生成することで、日時を取得することができます。
<?php $now = new DateTime(); echo $now->format('Y-m-d'); echo '<br>'; $now = new DateTime('2017-04-01'); echo $now->format('Y-m-d'); ?>
2017-05-31 2017-04-01
「new DateTime()」では、引数なしでDateTimeクラスを初期化しています。
その場合は、現在日時が設定されたDateTimeオブジェクトが作成されます。(実行結果は、2017/5/31に実行したものです。)
「new DateTime(‘2017-04-01’)」のように、DateTimeクラスに設定する日時を引数に指定して初期化することもできます。
DateTimeについては、以下の記事で詳しく解説しています。
変数を初期化する
Javaなどのオブジェクト指向型言語は、変数を初期化するのにnewを使用します。
しかし、PHPはnewを使用しなくても初期化することができます。
<?php $array = [0, 1, 2]; var_dump($array); echo '<br>'; $array = [3, 4]; var_dump($array); ?>
array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(2) } array(2) { [0]=> int(3) [1]=> int(4) }
「$array = [0, 1, 2]」で、$arrayには配列が代入されていますが、「$array = [3, 4]」で、$arrayはnewを使わずに違う配列で初期化されています。
データベースを初期化する
mysqliクラスのオブジェクトを使用し、データベース操作を行うことができます。
データベースへの接続、SQLの実行、切断までのサンプルです。
<?php $mysqli = new mysqli('localhost', 'root', 'passwd', 'dbname'); if ($mysqli->connect_error){ exit(); } $result = $mysqli->query("SELECT COUNT(*) FROM SAMPLE_TABLE"); $row = $result->fetch_row(); echo $row[0]; $mysqli->close(); ?>
「new mysqli(‘localhost’, ‘root’, ‘passwd’, ‘dbname’)」では、「データベースサーバ」「ユーザ名」「パスワード」「データベース名」などの接続に必要な情報を引数に指定して、mysqliクラスを初期化します。
それを代入した変数 $mysqli で、データベース操作を行います。
「$mysqli->query(SQL文)」で、SQLが実行されます。
「$mysqli->close()」で、データベースから切断されます。
まとめ
今回はnewの使い方について解説しました。
newはオブジェクトの初期化に必要な非常に重要なキーワードです。
newの使い方を忘れてしまったら、この記事を思い出して下さい!