Go to top Go to bottom

前回の記事で、最小構成のテーマを作成してPHP/HTMLの書き方を学習しました。

WordPressのテーマをきちんと作成するには、どうしてもPHPの知識が必要になります。本サイトはPHPをテーマにしているわけではありませんが、この記事を通して、テーマ作成のために最低限必要だと思われるPHPの基礎について習得していきたいと思います。

読むだけで理解できるよう努めますが、せっかくindex.phpが動いているので、ぜひ自分でコーディングしてみてください!

変数

変数と代入

変数とは、文字列(string)や数値(int/float)を入れておくための入れ物で、$a$countのように頭に$をつけて表します。変数の名前には、アルファベットとアンダーバー、および数字が使えます(ただし先頭に数字は使えません)。

ほかのプログラム言語のように、変数を宣言する必要はありません

変数に何かを入れる(代入する)には=(イコール)を使います。数学的な「等しい」という意味ではありません。

<?php
  $a = 10;
  echo $a;
?>

$aに10を入れて、echo $a;で出力してみました。ブラウザには10と表示されるはずです。

数字の場合は四則演算などが可能です。

<?php
  $a = 10;
  $b = 5;
  $c = $a + $b;
  echo $c;
?>

$a$bを足した結果を$cに代入して、echo $c;で出力しています。結果は15となります。

変数に入れられるもの

変数には様々な種類のものを入れることができます。この「種類」のことを、プログラムでは「」と言います。

入れられるもの
数値int(整数)またはfloat(小数)
文字列string
真偽値(true/false)boolean
配列array
オブジェクトobject
null(何も入っていない)null

ちょっと難しくなってきましたが、とりあえず今は「6種類くらいのものを変数に入れることができる」という理解で大丈夫です。

文字列

文字列とは

文字列(string)は文字のデータを扱うための型で、’シングルクォーテーション‘、または”ダブルクォーテーション“を用いて表現します。両者に差はほとんどありませんが、WordPressでは’シングルクォーテーション’を用いることをおすすめします。

<?php
  $name = 'Jun Akizaki';
  echo $name;
?>

ブラウザにはJun Akizakiと表示されます。

文字列の連結

複数の文字列は、’.’(ドット)を用いて連結することができます。

<?php
  $name = 'Jun Akizaki';
  echo 'Hi, there! I am ' . $name;
?>

'Hi, there! I am '$nameが連結された結果、Hi, there. I am Jun Akizakiと表示されます。

文字列の連結はWordPressでもよく使います。

配列

普通の配列

変数は1つのデータしか入れられませんでしたが、配列は複数のデータを入れることができます。

<?php
  $animals = array( 'dog', 'cat', 'pig' );
?>

このarray()は配列を作るための命令です。PHPのバージョンが5.4以降の場合は

<?php
  $animals = [ 'dog', 'cat', 'pig' ];
?>

と書くこともできます。ただ、ぼくはいまだにarray()のほうを使います。

配列に入っているデータは、0、1、2というふうにインデックスがついていますので、データを取り出すときは[]を使って次のように書きます。

<?php
  $animals = array( 'dog', 'cat', 'pig' );
  echo $animals[0];
?>

0番のデータはdogですので、ブラウザにはdogと出力されます。

連想配列

数字によるインデックスではわかりにくいので、名前を付けることができます。

<?php
  $site = array( 
    'url'     => 'thewppress.com',
    'auther'  => 'Jun Akizaki',
    'theme'   => 'WordPress', 
  );
?>

改行されていますが、$siteから;までがひとまとまりです。このように、keyvalueの組み合わせで表現する配列を「連想配列」といい、WordPressでは頻繁に使われます。

keyとvalueを組み合わせるのためには=>という、=>を組み合わせた、矢印のような書き方をします。

データを取り出したいときは、インデックスの代わりにkeyを用いて$site['url']のように書きます。

<?php
  $site = array( 
    'url'     => 'thewppress.com',
    'auther'  => 'Jun Akizaki',
    'theme'   => 'WordPress', 
  );

  echo '<p>サイトのURL: ' . $site['url'] . '</p>';
  echo '<p>サイトの著者: ' . $site['auther'] . '</p>';
  echo '<p>サイトのテーマ: ' . $site['theme'] . '</p>';
?>

ブラウザで確認すると、次のように表示されます。

連想配列を使った出力
連想配列を使った出力

条件分岐

if文の基本

条件分岐」とは、条件によって処理を分岐させることを意味します。とりあえず、if文のみ理解しておけば十分でしょう。

if文は次のように記述します。

if( /* 条件 */ ) {
  /* 条件を満たした時の処理 */
}

「条件」を処理した結果がtrueなら「条件を満たした時の処理」が実行され、そうでないときは何も起きません。

<?php
  $a = 10;
  $b = 2;

  if( $a > $b ) {
    echo $a . 'は' . $b . 'より大きい';
  }
?>

10は2より大きいですので、「条件」はtrueになり、echo $a . 'は' . $b . 'より大きい';が実行されます。

elseとelseif

elseは、ifの条件を満たさなかったときに実行する処理を書くためにあります。

<?php
  $a = 10;
  $b = 20;

  if( $a > $b ) {
    echo $a . 'は' . $b . 'より大きい';
  } else {
    echo $a . 'は' . $b . 'より小さい?';
  }
?>

10は20より小さいので、if文の条件は満たしません。条件を満たさなかったときは、elseの中に書いてある処理が実行されます。

elseifは条件を追加するときに使います。

<?php
  $a = 10;
  $b = 2;

  if( $a === $b ) {
    echo $a . 'と' . $b . 'は等しい';
  } elseif( $a > $b ) {
    echo $a . 'は' . $b . 'より大きい';
  } else {
    echo $a . 'は' . $b . 'より小さい';
  }
?>

10と2は等しくないので、ifの条件は満たしませんが、10は2より大きいので、elseifの条件は満たします。したがって「10は2より大きい」と出力されます。

ちなみに>===を「比較演算子」といい、いくつか種類があります。詳しくはこのページを参考にしてください。

等しいことを判定する2つの演算子

「等しい」を判定する比較演算子には、=====があります。==は型チェックをしませんが、===は型が同じでないと等しくなりません。

たとえば、$a = 1 $b = '1'のとき、$a == $btrueになりますが、$a === $bfalseになります。==は判定があいまいなので、===を使うことを推奨します。

ループ

繰り返し処理を行うことを、プログラムではループと表現します。

for文が最も有名ですが、WordPressではほとんど使わないので、whileとforeachについてのみ説明します。

while文

while文は次のように書きます。

while( /* 条件 */ ) {
  /* 繰り返し行いたい処理 */
}

while文は、「条件」を満たす限り延々と「繰り返し行いたい処理」を実行し続けます。したがって、「条件」はいつかfalseになるものでないと、無限ループにはまります。

たとえば、次のように常に満たす条件を与えると、処理が終わらずサーバが応答しなくなります(この処理は実行しないでください)。

<?php
  $a = true;

  while( $a ) {
    echo '無限ループってこわくね?';
  }
?>

while文は「x回処理を実行する」などといった、カウントと一緒に使われることが多いです。

<?php
  $count = 1;

  while( $count <= 5 ) {
    echo '<p>カウント: ' . $count . '</p>';
    $count++;
  }
?>

$count++++は数字を1加算(インクリメント)する命令です。したがって、whileの中身が実行されるたびに数値が上がり、いつか$count <= 5を満たさなくなって終了します。

while文の出力結果
while文の出力結果

5までカウントして終了していますね。ちなみに、1減算(デクリメント)するには、--演算子を使います。

foreach文

foreach文は、配列や連想配列とセットで使います。少しわかりにくいので、例をみてみましょう。

<?php
  $animals = array( 'dog', 'cat', 'pig' );

  foreach ( $animals as $value ) {
    echo '<p>' . $value . '</p>';
  }
?>

1回目の処理では、$value'dog'が入り、2回目の処理では'cat'が入ります。配列のすべての要素を処理したらforeachは終了します。

配列とforeachの出力結果
配列とforeachの出力結果

「配列のすべての要素に対して処理を行いたい」というケースは多いですので、foreachはとても便利です。

連想配列の場合は、次のようなことができます。

<?php
  $animals = array(
    'dog' => 'わんわん',
    'cat' => 'にゃー',
    'pig' => 'ぶーぶー',
    'fox' => '???',
  );

  foreach ( $animals as $key => $value ) {
    echo '<p>' . $key . 'は「' . $value . '」と鳴きます。</p>';
  }
?>

$key => $valueとすることで、keyvalueをセットで取り出すことができます。

連想配列とforeachの出力結果
連想配列とforeachの出力結果

関数

関数はWordPressで頻繁に使いますので、しっかり頭に入れておきましょう!

関数の基本

関数とは、いくつかの処理をまとめて名前をつけたものです。「定義」して「呼び出す」という2ステップで使います。

<?php
  function echo_my_name() {
    $first_name = 'Jun';
    $family_name = 'Akizaki';

    echo $first_name . ' ' . $family_name;
  }

  echo_my_name();
?>

function 関数名()という形で定義します(小文字の英数字とアンダーバーで命名します)。呼び出すときは関数名()と記述します。

上のプログラムを実行すると、Jun Akizakiとブラウザに表示されます。

引数(ひきすう)

引数は、関数を実行するときに情報を渡すための仕組みです。言葉ではわかりにくいので、例を見てみましょう。

<?php
  function sum( $a, $b ) {
    $sum = $a + $b;
    echo '<p>' . $a . 'と' . $b . 'を足すと' . $sum . 'になります</p>';
  }

  sum( 5, 10 );
  sum( 9.2, 6.98 );
  sum( 7 + 10, 1000 );
?>

この$a$bが引数で、関数を定義するときは具体的な値はわかっていません。関数を使うときに値を代入することで、足し算をするプログラムを、汎用的に使うことができます。

関数sumの実行結果
関数sumの実行結果

関数は、同じような処理をまとめるのにとても便利です。

ちなみにWordPressでは、引数に配列を取る関数が非常に多いですので、ここで少し練習しておきましょう。

<?php
  $group1 = array(
    'dog'   => 'わんわん',
    'cat'   => 'にゃー',
  );

  $group2 = array(
    'horse' => 'ひひーん',
    'pig'   => 'ぶーぶー',
    'cow'   => 'もーもー',
  );

  function echo_animals( $args ) {
    foreach ( $args as $key => $value ) {
      echo '<p>' . $key . 'は「' . $value . '」と鳴きます。</p>';
    }
  }

  echo_animals( $group1 );
  echo '<hr />';
  echo_animals( $group2 );
?>

$argsは配列が渡されることを想定した引数です。中でforeachを用いてすべてのkeyvalueを出力しています。

この引数に、$group1の配列と、$group2の配列を順番に渡しています。

関数の引数に配列を渡した出力結果
関数の引数に配列を渡した出力結果

引数に配列を渡すとき、いちいち新しく変数を定義せず、次のように直接書くこともできます。

echo_animals( array( 'dog' => 'わんわん', 'cat' => 'にゃー' ) );

WordPressでは、この直接渡す記法をよく見かけます。長くなる場合は、次のように改行すれば読みやすくなります。

echo_animals( array( 
  'dog'   => 'わんわん',
  'cat'   => 'にゃー',
  'horse' => 'ひひーん',
  'pig'   => 'ぶーぶー',
  'cow'   => 'もーもー',
) );

返り値(かえりち)

返り値とはその名のとおり、関数を実行した際に返ってくる値のことです。上で見てきた関数には返り値はありません(void関数)。

<?php
  function get_sum( $a, $b ) {
    $sum = $a + $b;
    return $sum;
  }

  $sum1 = get_sum( 5, 10 );
  $sum2 = get_sum( 5.7, 9.2 );

  echo '<p>' . $sum1 . '</p>';
  echo '<p>' . $sum2 . '</p>';
  echo '<hr />';
  echo '<p>' . get_sum( 5, 10 ) . '</p>';
  echo '<p>' . get_sum( 5.7, 9.2 ) . '</p>';
?>

returnで返す値を決めます。return以降は処理が実行されないので、関数の一番最後に記述するのが基本です(ifを使って、条件によって返す値が異なる場合には、returnが複数存在することもあります)。

返り値はechoと違って出力はされません。$sum1 = get_sum( 5, 10 );のように変数に入れて使ったり、あるいはecho '<p>' . get_sum( 5, 10 ) . '</p>';のように、そのままほかの処理と組み合わせて使ったりします。

返り値を持つ関数の出力結果
返り値を持つ関数の出力結果

クラスとオブジェクト

これで最後です。もう少しですので頑張ってください。

クラスとは、いくつかの変数や関数をまとめて、ひとつの大きな機能を作成するための仕組みです。クラスの変数をプロパティ、クラスの関数をメソッドと言います。

オブジェクトとは、クラスの機能が丸ごと入った変数だと思ってください。

最初のうちは、自分でクラスを作成できる必要はありませんので、ここでは深く説明はしません。ただし、オブジェクトの操作方法だけは知っておく必要があります。

$object->a; /* プロパティを使う */
$object->method(); /* メソッドを使う */

オブジェクトの中のプロパティやメソッドにアクセスするには、->を使います。連想配列の=>とは異なりますので注意してください。

現段階では、プロパティは変数のように、メソッドは関数のように扱えば問題ありません

おわりに

PHPの超基本について解説してみました。眠くなるような内容ばかりで、あまり面白くなかったかもしれませんが、テーマを作る上ではPHPの基礎がどうしても必要になります。

  • 変数と代入
  • 文字列と連結
  • 配列と連想配列
  • if文、elseif文、else文
  • whileループ、foreachループ
  • 関数の定義と使い方
  • 関数の引数と返り値
  • プロパティとメソッドの使い方

すぐにコードが書けなくても、それぞれがどのような意味・内容なのかは理解しておきましょう。そうしないと、今後の内容がちんぷんかんぷんになってしまいます。

書き方だけであれば、Googleで検索すればすぐに見つかるので、今は忘れてしまっても構いません。

さて、次回はいよいよ、実際にテーマを作ってみたいと思います!

つづけて読む

この記事には続きがあります。

ぜひ合わせて読んでみてください!