【php】class(クラス)の解説と便利な使い方

php-classphp
書いてる人
あいりゅー

プログラミングを学びながら更新しています。
iPhone/iPad/Mac/Apple WatchなどのApple製品はこちらで主に更新しています。
麻雀の反省をひたすら掲載してるブログもやってます。

あいりゅーをフォローする

このページについて

このページではphpで使う事ができるclassに関する解説と、classの使い方の解説をしています。

class

classについてよく言われるのは「classはオブジェクトのテンプレートであり、オブジェクトはclassのインスタンスです。」ですね。これらをさらに分かりやすくいうと「classは設計図であり、その設計図をもとに作られたのがオブジェクトです。オブジェクトは設計図から作られたものです。」っていう感じですね。インスタンスってのはコピーとかそういう感じの意味合いって感じでOKです。

今回はそんなclassの書き方と使い方を解説していきます。

classの構文

classはいくつかのものから構成されています。

class クラス名 {
変数;
関数;
}

まずクラス名について。これは自分がわかるならなんでも良いとおもいます。変数はそのclass内で扱う変数です。関数も同様に、class内で使う関数ですね。次に変数と関数の解説と、それにまつわる用語の解説をしていきます。

classの変数

classで使う変数のことをメンバ変数と言います。このメンバ変数は常に固定値である必要があります。内容がコロコロ変わるような変数の書き方をしている場合はエラーとなります。以下はエラーとなります。

$b = 100;
class クラス {$a = $b; }

そしてメンバ変数はそれぞれに対してアクセス範囲を設定する必要があります。3種類から選んで設定できるんですが、それぞれ詳しく書いていくと

public
classの内外から自由に呼び出せる変数。
protected
そのclassの中と、そのclassを継承したclassで自由に使えるようにする設定。
private
そのclass内でしか使えないようにする変数。

基本的にはpublicを使います。なので以上までのルールを踏まえると以下のように書くのが正解となります。

class クラス名 {
public $a = 1;
protected $b = 2;
private $c = 3;
}

このclassを呼び出して各変数を呼び出すと、一番上のpublicのみ呼び出されますがそれ以外はエラーとなります。

classの関数

classで使う関数はメンバ関数と呼びます。このメンバ関数は通常の関数と同様の書き方をします。

class クラス名 {
function 関数名() {
処理内容;
}
}

このように書きます。関数名の後の()で引数などの設定をすることも可能です。その場合以下のように書きます。

class クラス名 {
function 関数名($n) {
echo $n;
}
}

$nを引数として受け取り、そのまま出力するという関数になります。そしてclass内のメンバ変数を使いたい場合は、thisとアロー関数を使います。

thisとアロー関数

thisは「このclass」という扱いになります。class内で使ったら自動でそのクラス名が代入されて使う事ができます。

そしてもう1つ重要なのがアロー関数というものです。アロー関数は->と書く事で使えます。メンバ変数を使う場合、上のthisとアロー関数を合わせて使う必要があります。thisを使わないとそもそも変数を扱えないので注意してください。

class test {
public $a = 0;
function sum() {
echo $this->a;
}
}

このclassのメンバ変数($a)をsum関数内で使う場合、$this->aと書きます。注意点として$は1つでOKです。$this->$aと書くとエラーとなるので注意しましょう。

引数を渡す関数

メンバ関数に引数などのパラメータを設定する場合の書き方はこのようになります。

class test {
public $a = 3;
function num ($b) {
echo $this->a * $b;
}
}

これでtestクラスのnum関数に対して数字を渡せば、testのメンバ変数aと掛け算をして出力してくれます。

他のfunctionを含める

function内に別で作ったfunctionを含めることもできます。classに関係なくてもOKです。

function f1() {
echo 'Hello';
}
class test {
public $a = 'world';
function te() {
f1();
echo $this->a;
}
}

これでtestクラスのte関数を実行すれば、一番最初に作成したf1関数も同時に実行されます。結果は以下の通りです。

class内で別の関数を呼び出す方法

classの呼び出し方

classはfunctionと同じく、作成しただけでは使えません。classのコピー(インスタンス)を作成して変数に代入することで、使う事ができるようになります。

class te{
変数;
関数;
}
$a = new te;

一番最後にある$aにnewでクラス名を宣言します。そうする事で、$aの中にはclassが丸ごとコピーされています。そして$aからアロー関数を使って使いたい変数・関数を呼び出します。

class te{
public $c = 1;
function num() {
echo $this->c;
}
}
$a = new te;
echo $a->c;
$a->num();

$a->cと書く事でclass内のメンバ変数を呼び出せます。そしてその下は関数を呼び出しています。最終的にどっちも1が出力されるんですが、変数と関数の呼び出し方はこのようになります。

classの変数の中身を変える

classの中に入れるメンバ変数は常に固定と書きましたが、$thisを使えば中身を変更する事ができます。

class test{
public $a;
public $b;
function a($num) {
$this->a = $num;
}
function b($str) {
$this->b = $str;
}
}

classの作成はこうなります。ここまで紹介してきたclassは常にメンバ変数に何かしらを代入していましたが、今回はそもそも値を入れないという書き方をしています。

その後のfunctionにて、引数指定をした関数を作成してその中でメンバ変数に代入するように処理を書きます。これは普通の変数の宣言と同じ感覚で書けばOKです。

そしてインスタンスを作成後、いつも通り関数を呼び出すんですがここで引数として$aと$bに入れたい値などを入力します。

classのメンバ変数の値を変更する方法

この方法はメンバ変数に特定の値を入れないまま使いたい場合などに利用できます。

まとめ

phpのclassに関する解説を行ってきました。classは最初は謎の多い関数に感じると思いますが、実際に書いてみれば簡単かつ便利に扱えます。変数の中身を変更する方法など具体的な処理の例も参考にしてみてください。

phpの基礎
phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
echoとprint
画面に文字を出力する2種類の言語構造の使い方
変数
phpで使える変数の扱い方などを解説しています。
変数のスコープ(有効範囲)
変数のスコープについての解説です。
var_dump
変数の情報を見ることができる関数
print_r
変数の情報をわかりやすい形式で表示する関数
配列と連想配列
配列と連想配列の書き方と、便利な関数の解説など。
key
連想配列のキーを返してくれます。内部ポインタ関係あり。
count
配列や連想配列の要素数を数えてくれる関数の使い方解説。
ソート関数
配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
array_reverse
配列の中身の順番を反転させる関数です。
array_chunk
配列を指定した数で分割させるarray_chunk関数の使い方解説です。
array_combine
2つの配列を足して1つの連想配列にする関数です。
array_diff
2つの配列を比較して、存在しない値を出力する関数
array_push
配列に対して後方に要素を追加する関数
array_unshift
配列に対して先頭に要素を追加する関数。
array_shift
配列の先頭の要素を取り出す関数。
array_merge
複数の配列を統合して1次元の配列にする関数
array_intersect
2つの配列を比較して、両方に共通するものを出力する関数
include
includeを使って別のphpファイルを読み込む方法の解説。
if文
if文を使って処理を変更させる方法の解説。
switch文
switch文を使って複数の処理分岐を行わせたい時に使います。
forループ
forループを使って同じ処理を行わせる方法の解説です。
whileループ
whileループを使って同じ処理を行わせる方法の解説と注意点。
do-whileループ
do-whileループを使って同じ処理を行わせる方法の解説です。
foreachループ
foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
continue
ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
ループのネスト構造(入れ子)
ループの中にループを入れる書き方や考え方の解説。
function
functionを使って自作の関数を作成・使用する方法の解説。
引数の種類と書き方解説
functionで扱う引数の種類と書き方を解説
return
returnの使い方と関数での使い方解説。
class
classを作成して変数と関数を1つにまとめる方法と使い方の解説。
constructとdestruct
classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
インターフェイス
インターフェイスという用語の解説と、実際の使い方解説
トレイト
コードを再利用するのに便利なトレイトの解説です。
列挙型
プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
PDOを使ってMySQLへ接続
PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
データの加工と表示
PDOでデータベースから取得したデータを加工して表示する方法の解説です。
HTMLフォームのデータ受け取りと表示
HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。
タイトルとURLをコピーしました