【PHP入門】newの使い方まとめ

こんにちは!フリーエンジニアのせきです。

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の使い方を忘れてしまったら、この記事を思い出して下さい!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

せき

せき

フリーランスでWebシステム開発やゲーム開発をしています。
読者の方にプログラミングの面白さをお伝えしたいです。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説