【PHP入門】環境構築でつまずかない! 初心者でも安心!

基本的な構文がわかる人は掲示板アプリづくりへ

簡単なお釣りを計算するプログラムを作ってみる

PHPとは?

PHPとは、「Personal Home Page」のことで、名前の通りWeb開発に特化している言語です。また、人気があり求人数も多い上に覚えやすいため、初心者でも手をつけやすい特徴があります。

プログラムはコンピュータに与える命令の集まりです。プログラムを書くための仕様を定義したものが「プログラミング言語」であり、PHPもその1つです。インターネットを通して利用するソフトウェアをWebアプリケーションといいますが。PHPはWebアプリケーションを作るためのプログラミング言語といえます。

Webページの正体は、HTMLという規則で書かれた文字だけのファイル(テキストファイル)です。ブラウザは HTMLファイルを受け取って、これまたHTMLの規則に従って画面表示します。

「PHP は Web ページを作るためのプログラミング言語」と書きました。でも、実は PHPという言葉には「プログラミング言語」の意味と、「処理するシステム」という意味の、2つがあるのです。つまり PHP は Web サーバー側にインストールする必要があるということです。逆にクライアント側には必要ありません。

環境構築とは

初めてのプログラミング言語を触る際、環境構築を必ず行います。いきなりコードを書いても、自分のPCにその言語を動かす環境を整えていなければ、プログラムが動かないからです。バットとボールとグローブが無いと、野球ができないことと一緒です。

MAMPとは何なのだろうか?

PHP の仕組みは Web サーバーに置く、ということがわかりました。つまり、Web サーバーがないとPHPの勉強ができない、ということです。では、はじめてPHP を体験するみなさんは、いったいどこにあるWeb サーバーを使えばよいのでしょうか。

PHP を体験するには Web サーバーデータベースPHP 処理システムが必要です。データベースとは何か? まだわかりませんよね。とにかくこの3つが必要なのです。

実はこの3つをあなたのPC で一度に使えるようにするソフトウェアがあります。それが MAMP です。MAMP は Apache(アパッチ)という名前の Web サーバー、MySQL(マイエスキューエル)という名前のデータベース、もちろん PHP も、まとめてあなたの PCで使えるようにしてくれる優れものです。

MAMP が動作すると、みなさんの PC がクライアントと Web サーバーの2つの機能を持つようになります。みなさんが PHP を勉強するときは、クライアントである自分の PCから、Web サーバーである同じ自分のPC にアクセスすることになるのですね。

MAMPをインストール

MAMPとは
M:Macintosh
A:Apache
M:MySQL
P:PHP
の略であり、Webアプリケーション開発に必要なソフトウェアを、まとめてPCにインストールすることが出来ます。
知らない英単語ばっかで混乱するかもしれませんが、今は「MAMPをインストールしたらWeb開発が出来る様になる」くらいの認識で大丈夫です。

ソフトウェアを追加して利用できる状態にすることをインストールといいます。プログラミングの世界では、インストールから戦いが始まります。この手のソフトウェアでは動作するまでに長い道のりがある、というのが相場です。でもMAMPなら、ほぼNextをクリックするだけでインストールが終了します。

まずはMAMPをダウンロードしましょう。MAMPにはWindows版とMac版の両方が用意されています。ここでは両方のインストール手順を解説します。ところで、Windowsをお使いの方はファイルの拡子(ファイル名の後にある「.zip」など)は表示されていますか。もし表示されていないようでしたらあらかじめ、表示させてください。

1、表示タブを選択
2、ファイル名拡張子にチェックを入れる

MAMPは以下のURLからダウンロードします。

MAMPのダウンロード

MAMPにはフリー版の MAMPと有償版の MAMP PRO があり、インストーラは共通になっています。説明ではフリー版の MAMP のみを使用します

基本的には[Next]をクリックするだけで終了します。

MAMPのインストール(Windows 版)

1、Select Startup「Language」で言語を選択する画面→[ English]のまま[OK]をクリック

2、「MAMP PRO」と「install Apple Bonjour」のチェックを外し→[Next]をクリック

3、ライセンスに関する文章で「I accept the agreement」を選択し→[Next >]をクリック

4、インストール先のフォルダまたは「C:¥MAMP」のまま→[ Next ]をクリック

5、ショートカット作成のフォルダは「MAMP」のまま→[ Next ]をクリック

6、デスクトップに MAMP のアイコンを作成するため、「Create a desktop icon」にチェック

7、インストールの内容が表示されるので→[ Install ] をクリック

8、インストール作業が開始される

9、セットアップが完了したら→[Finish]をクリック

 MAMPのインストール(Mac版)

1「ようこそ~インストーラへ」、「大切な情報」の画面で→[ 続ける]をクリック

2「使用許諾契約」の画面で→[続ける]をクリック

3上部に「~使用許諾契約の条件に同意~」が表示されたら→[同意する] をクリック

4「インストールの種類」で→[インストール]をクリック

5インストール作業が開始される

6「概要」の「インストールが完了しました」の画面で→[閉じる]をクリック

1.MAMPのダウンロード




ダウンロードが開始します。
※広告が表示されますが、画面のグレー部分を押下すれば消えます。

2.MAMPのインストール

ダウンロードしたファイルを実行します。
インストールが開始するので、「続ける」を押下します。

「続ける」を押下します。(プリントや保存しても良いです。)

「続ける」を押下します。(プリントや保存しても良いです。)

同意の確認が出るので、「同意する」を押下します。

今回は、インストール先を変えずに「続ける」を押下します。

「インストール」を押下します。

インストールが開始するので、完了まで待ちます。

「インストールが完了しました。」と出たらインストール完了です。

インストーラーは不要になったので、「ゴミ箱に入れる」を押下します。

MAMPのインストールは以上です。

3.MAMPの起動

MAMPのインストールが完了すると、アプリケーションに「MAMP」と「MAMP PRO」が入ってるはずです。
※「MAMP PRO」は「MAMP」に機能が追加された有料版なので、今回は使いません。

MAMPのフォルダを開き、「MAMP.app」を起動します。

起動すると広告が出てくるので、左下のチェックを外し、閉じます。


「Start 」を押します。

4.確認

起動後、勝手にブラウザが開き以下ページが表示されます。
このページが表示されると、MAMPの起動は完了です。

Hello World

テキストエディタを開き、以下を入力して下さい。(テキストエディタはVisualStudioCodeを使用します。)VSCODEについてはこちら

<?php
echo "Hello World!";
?>

ファイル名を「HelloWorld.php」にして、「/MAMP/htdocs」に保存します。

ドキュメントルートについて

PHP プログラムはドキュメントルート (Document Root)に保存します。ドキュメントルートとは、Web サーバーによって外部に「公開されるフォルダ」のことです。このフォルダ以下にあるファイルやフォルダは、たとえば「http://localhost/…」という URL で、Webブラウザからアクセスできます。 PHP プログラムは、すべてこの公開されるフォルダに置きます。Windows では「C:\MAMP\htdocs」、Mac なら「/アプリケーション /MAMP/htdocs」が「公開されるフォルダ」になります。




ブラウザを開き、「http://localhost/HelloWorld.php」へアクセスする。
画面に「HelloWorld!」と表示されたら成功。
ローカルサーバーへのアクセス
http://localhost/フォルダ名/ファイル名

Mac版MAMPを使うときの設定

macOS にはもともと Apache がインストールされており、80 番ポートを使用する設定になっています。このプリインストールの Apache はユーザーが明示的に起動する必要があるため、たいていは起動されていないことが多いでしょう。

Mac 版の MAMP では、プリインストールの Apache が起動されている場合を考慮して、MAMP によってインストールされる Apache が使用するポートがデフォルトの80番から8888番に変更されています。同様に MySQL が使用するポートもデフォルトの 3306 番ではなく8889番です。このため localhost にアクセスする場合、「http://localhost:8888/~」のようにホスト名に「:8888」をつける必要があります。

使用されているポートを調べる

Mac で現在使用されているポートを調べるときは、まず Spotlight 検索を起動し、「ネットワークユーティリティ」を検索します。スキャンが終了して、上記のように何も表示されない場合は、現在ポートは使用されていませんので、変更も可能です。もし、80番や 3306番が使用されていて、たとえば「Open TCP Port: 80 http」などと表示された場合は、ポートの変更をあきらめてURL に「:8888」をつけて運用しましょう。

環境構築まとめ

PHPの環境構築は以上です。
MAMPを使うことで、PHPだけでなく、Web開発の環境も同時に作りました。
環境構築がうまく行かない場合は、MAMPのインストールが失敗してたり、ファイルを置く場所やURLが間違ってたりするので、もう一度確認してみて下さい
PHPを学べば、ユーザーからデータを受け取りそれを表示するなど、実際のWebサービスで必要な機能を作ることが出来ます。
HTMLでは決められたテキストしか表示することができませんでした。
PHPを使うと、見る人や状況に応じて、表示するテキストを変えることができます。

PHPはHTMLに埋め込んで使うことができます。<?php 〜 ?>の中にPHPの命令を書いていきます。<?php 〜 ?>の部分がHTMLに変換された上で表示されます。

PHPでは文末にセミコロン「;」を使って文を区切ります。 セミコロンを忘れるとエラーが起きるので注意しましょう。また、「//」から行末まではコメントになります。動作には関係しない情報で、主にメモなどに用いられます。

「echo」は文字列などを出力するための命令です。文字列を出力する場合はシングルクォーテーション「’」かダブルクォーテーション「”」で囲みます。

プログラミングを使えばコンピュータに計算させることが出来ます。計算はコンピュータの最も得意なことの一つです。足し算は「+」、引き算は「-」、掛け算は「*」、割り算は「/」で表します。PHPでは割り算の余りを計算することもでき、「%」で表します。

PHPには、「文字列」や「数値」などのデータの種類があります。「’Hello’」,「’a’」などは文字列、「1」,「3.14」などは数値となります。

図のように、数値として「 5 + 2 」を行うと7が出力されます。ただし「 5 + 2 」をシングルクォーテーションやダブルクォーテーションで囲むと、文字列と解釈されそのまま出力されます。

プログラミングの重要な概念の1つである「変数」を学びましょう。変数とは、データの入れ物です。頭に「$」記号をつけることによって変数を定義します。「$変数名 = 値;」で様々な値を変数に入れることが出来ます。「=」はプログラミングの世界では、右辺を左辺に代入するという意味です。

変数を使うメリットは大きくわけて2つあります。 ①データに名前をつけることでそのデータが何を表しているかを明確にできる。②複数回使うデータを1つの変数に入れておくことで、変更があった場合も1箇所の修正ですむ。

ダブルクォーテーションで文字列を囲んだ場合、中の変数を{}で囲むとその部分が変数に入っている値で置き換えられます(変数展開)。シングルクォーテーションで文字列を囲んだ場合は変数展開されず、変数が{}で囲まれていてもそのまま文字列としてみなされます。

if文を使うと、条件に応じて処理を分岐することができます。
if文は図のように書きます。
条件が成り立つ場合、{}の中の処理が実行されます。
条件が成り立たない場合は処理が実行されません。

ifと組み合わせてelseを使うと、「もしも〜だったら・・・、そうでなければ・・・」といった条件分岐が可能になります。if文の条件が「false」であった場合、elseの中の処理が実行されます。


if, elseifによる分岐が多く複雑な場合、switch文で書き換えるとシンプルで読みやすいコードにできます。switch(式)の(式)がcaseの値と一致したとき、そのブロックが実行されます。caseのどれにも一致しなかった時、defaultのブロックが実行されます。

while文

while

while文もfor文と同様に、繰り返し処理の一つです。
条件式を指定し、それがtrueの間、処理が繰り返し実行されます。
for文の時のように変数$iが自動的に増えていかないため、ここではループのたびに「$i ++;」を行っています。

break

break

break文は現在のループを強制的に中断する命令です。for, while, foreachなどの繰り返し文の中で利用できます。break文はif文などの条件文と組み合わせて利用するのが一般的です。

continue

continue

ループそのものを完全に抜けてしまうbreak文に対して、continue文は現在の周だけをスキップし、ループそのものは継続して実行します。
continue文もfor, while, foreachなどの繰り返し文の中で利用できます。

foreach

foreach

foreach文とは、配列または連想配列に対して、先頭のデータから順に繰り返し処理を行うための命令です。
以下のように配列のデータを1つずつ取り出して処理を行うことが出来ます。
「as」の後ろの変数に、ループの度にデータが先頭から順に代入されていきます。asの後ろの変数名は何を指定しても大丈夫です。

引数

関数

関数を呼び出す際、関数に値を渡すと、関数内でその値を利用することができます。この値を「引数」と呼びます。引数を関数内で使うには、それを受け取るための「仮引数」を、関数の定義時に指定しておく必要があります。仮引数が複数ある場合はカンマ(,)を用いて指定します。

戻り値

return関数

関数は値を「返す」ことができて、この値のことを戻り値と呼びます。
関数を実行した結果、その関数実行部分が戻り値に置き換わるというイメージです。
戻り値は「return」で指定します。

フォームをつくろう

いよいよお問い合わせフォームをつくっていきます。
フォームの見た目はHTMLでフォームを作成し、入力値を取得するためにPHPを使用していきます。

フォームの準備をしよう

<form>

フォームを作りたい時は、HTMLの<form>タグを用います。
action属性にはデータを渡す先のURLを指定します。
method属性は値の送信の方法で、「get」と「post」のどちらかを指定します。getの場合は送信される値がURLに表示され、postの場合はURLに表示されません。

テキストボックスをつくろう

<input>

テキストボックスをつくるにはHTMLの<input type=”text”>を使います。name属性は入力された値を取得するときに使う名前です。後にフォームのデータを受け取るときに使用します。<input>タグは閉じタグが必要ないことに注意しましょう。

テキストボックスをつくろう

<textarea>

改行を含む文章のためのテキストボックスをつくるにはHTMLの<textarea>タグを用います。
<input>タグと同様にname属性に、入力値を取得するときに使う名前を指定します。<textarea>タグは閉じタグが必要なので注意してください。

送信ボタンをつくろう

<input>

送信ボタンをつくるには<input type=”submit”>を用います。
value属性に指定された値がボタン上に表示されます。

フォームのデータを
受け取ろう

$_POST

フォームで送信した値を受け取るには「$_POST」を使用します。
「$_POST」は連想配列になっています。[ ]の中に、<input>と<textarea>のname属性に指定した値を入れることで、それぞれの送信した値を受け取ることが出来ます。

index.php
<form action=”sent.php”>
<input name=”name”>

sent.php
echo $_POST[‘name};

セレクトボックスの作り方

<select><option>

セレクトボックスをつくるには図のように<select>タグの中に<option>タグを並べます。
<option>タグの中身が選択肢として表示されます。

選んだ選択肢の値を渡そう

<select><option>

セレクトボックスの値の渡し方を見てみましょう。
<select>タグには「$_POST」で値を受け取るためのname属性を指定します。
<option>タグのvalue属性が送信される値です。

フォームを完成させよう

変数展開for<option>

いよいよ最後の演習になりました!繰り返し処理と変数展開を用いて多数のoptionタグを作りましょう。
ただし、変数展開を用いる際はダブルクォーテーションで囲むようにしましょう。

クラス

クラス

それでは実際に注文サイトを作るために、メニュー1つ1つのオブジェクトを作っていきます。
オブジェクト指向では「クラス」というオブジェクトの設計図を作成し、クラス(設計図)を元にオブジェクト(実体)を生成します。

クラスの書き方

クラス

それでは実際にクラス(設計図)の書き方を見てみましょう。
クラスは図のように、「class クラス名」と定義し、「{}」の間に、そのクラスの内容を書いていきます。
クラス名は大文字で始めます。

インスタンス

インスタンス

クラス(設計図)を元に生成された実体を「インスタンス」と呼びます。インスタンスとオブジェクトは同じ意味で使われます。
インスタンスは「new」を用いて「new クラス名()」で生成できます。
「$変数名 = new クラス名()」のようにすることで生成したインスタンスを変数に代入しています。
なお、インスタンスの生成はクラスの外で行います。


プロパティとメソッド

メソッドプロパティ

それではクラス(設計図)の中身を書いていきましょう。
クラス(設計図)にはそのインスタンス(実体)が持つ「プロパティ」と「メソッド」の2つを定義します。
プロパティとはインスタンスが持つデータのことで、メソッドはインスタンスに関連する処理(関数)のことです。

プロパティ

プロパティ

まずはプロパティ(インスタンスが持つデータ)について学んでいきましょう。
Menuインスタンスはインスタンスごとにそれぞれ違った料理名を持つので、その料理名のためのプロパティをMenuクラスに定義しましょう。

プロパティの書き方

プロパティ

プロパティは図のように「public $プロパティ名」のように定義します(publicについては後ほど説明するので気にしないでください)。
詳しい使い方は次のスライドで見ていきましょう。

プロパティへのアクセス

プロパティ->

「インスタンス->プロパティ名」とすることで、そのインスタンスのプロパティにアクセスすることができます(プロパティ名に$は不要)。
このように、プロパティにアクセスする際には「->」(ハイフン「-」と大なり「>」)を用います。

今度はクラス(設計図)にメソッドを定義していきましょう。
メソッドとはそれぞれのインスタンスが持つ関数のことです。

メソッド$this

メソッド内でインスタンスのプロパティやメソッドにアクセスしたい時には「$this」という特殊な変数を用います。
$thisはクラス内のメソッドの定義の中でのみ使用できます。
$thisはメソッドが呼ばれた時に、そのメソッドを呼び出しているインスタンスに置き換えられます。

コンストラクタ

コンストラクタ

__construct

「__construct」という特別なメソッドを定義すると、newを用いてインスタンスを生成するときに、このメソッドが自動的に呼ばれます。
このようなインスタンスの生成時に呼ばれるメソッドのことを一般的に「コンストラクタ」といいます。

コンストラクタと引数

__construct

__constructメソッドは引数をとることができます。
newを用いてインスタンスを生成する際には引数を与えることができ、その引数の値が__constructメソッドに渡されます。

コンストラクタとプロパティ

$this__construct

図のように、__constructメソッド内で、$thisを用いてインスタンスのプロパティに値をセットすることができます。
インスタンスの生成時にプロパティをセットすることができるので便利です。

HTMLにPHPを埋め込もう

本格的にレイアウトを組んでいくために、HTMLにPHPのコードを埋め込んでいきましょう。
図のようにPHPのコードを埋め込むことで、HTMLのコードとPHPのコードを切り分けることができ、見やすくなります。

メニュー一覧を作ろう

以下のように4つメニューを表示していきます。
4つのメニューが入った配列を用意して、その配列に対して繰り返し処理を用いて、それぞれのメニューを表示していきます。

foreach文をHTMLに埋め込もう

foreach文をHTMLに埋め込む際、図のように書くことができます。
foreach文の「{」の代わりに「:」、「}」の代わりに「endforeach」と記述し、その間に処理を書いていきます。この処理部分にはHTMLのタグを書くことができるので便利です。
HTMLにforeach文を埋め込むときは図のようにしましょう。

ここまで理解できたら、アプリ作りに挑戦しましょう