PHP7技術者認定初級試験の勉強方法 前編

PHP7技術者認定初級試験の勉強方法 前編

PHP7技術者認定初級試験に合格しましたので
その勉強方法等、これから受験する方に向けての記事です。
要点だけまとめましたので試験前にさらっと確認すると良いかと思います。

下記の公式問題集に沿って要点をまとめてみました。
下記の書式をしっかり読み込めば合格です。

  1. PHPの特徴

  2. テキストと数の操作

  3. ロジック:判定と繰り返し

  4. データのグループ:配列の操作

  5. ロジックのグループ:関数とファイル

  6. データとロジックの結合:オブジェクトの操作

1.PHPの特徴

  • phpはプログラムをコンパイルせず実行するスクリプト言語です。
  • phpはwebサーバで実行されるサーバサイドスクリプト言語となります。
  • phpはオープンソースでライセンス費はかかりません。

  • phpの動作環境はwindows、macOS、Linux十等あらゆるOSで利用可能です。
  • WebサーバとしてはIIS、Apache等のCGI規格をサポートするWebサーバであれば動作します。
  • phpの開始タグは <?php です。
    終了タグは ?> です。

  • // や # にてコメントを書くことができます。
  • 複数行コメントは /* と */ で囲みます。
  • 関数では大文字小文字は区別されませんが、変数では区別します。
  • 半角スペース、タブ、改行をホワイトスペースといい、これらはプログラムの実行には影響しません。

2.テキストと数の操作

  • $変数名とすることで変数を表します。
  • プログラム内で文字列を指定する場合、単一引用符「”」または二重引用符「””」を使用します。
  • 二重引用符で囲まれた特殊文字はその特殊文字が意味する値に置き換わりますが単一引用符では置き換わりません。

※\tはタブを意味します。二重引用符で囲った方はスペースに置き換わっています。
 \tはエスケープシーケンスと呼び、単一引用符では\tは利用できません。

  • printf()関数はフォーマットされた文字列を出力します。
    printf(フォーマット、変換する値)のように記述します。

※%.1fの1は小数点以下1桁で表示することを意味します。
 %.2fの2は小数点以下2桁を意味します。
 四捨五入しています。
 1桁表示では5以下を切り捨てています。

  • strlen()・・・文字数をカウントします。
  • substr()・・・文字列の1部を取り出します。
  • str_replace・・・一部の文字列を置き換えます。
  • trim()・・・文字列の前後の空白を取り除きます。


  • ucwords()関数・・・最初の文字を大文字にします。
  • strtolower()関数・・・すべて小文字にします。
  • すべてを大文字にする場合はstrtoupper()関数を用います。


  • 文字列を結合するには文字列結合演算子「.」ピリオドを用います。

  • 変数には命名規則があります。
    先頭文字はアルファベットもしくは「_」アンダースコアです。
    2文字目以降はアルファベット、「_」、数字です。
    アルファベットは大文字小文字が区別されます。
  • 等価演算子「==」は大文字小文字を区別したうえで一致すれば1を返します。

※print($strings1 == $strings2)はfalseとなり何も出力されておりません。

  • strcasecmp()関数・・・大文字小文字を区別せず一致すれば0を返します


  • 演算の記述法はいくつかありますので一通り記憶しておきましょう。
    どれも同じ$numberに1を加算しています。


  • ヒアドキュメントについてです。
    複数行にわたる文字を出力するのに便利な機能です。

※<<<がヒアドキュメントの合図になっていてこの次に書いた文字(end)が出現す
 るまですべて出力されます。
 dddd・・・はヒアドキュメント終了した後に記述しているため警告が出てま
 す。

3.ロジック:判定と繰り返し

  • if文による条件分岐です。
    if(条件){
    条件がtrueの場合の処理
    }else{
        条件がfalseの場合の処理

    以上が基本の形となります。

  • 多分岐処理
    if(条件1){
        条件がtrueの場合の処理
    }elseif(条件2){
        条件1がfalse、条件2がtrueの場合の処理
    }else{
        条件2がfalseの場合の処理
    }

  • 比較演算子については確実に覚えておく必要があります。
    == 等しい(データ型は判定しない)
    === データ型も含めて等しい
    != 等しくない(データ型は判定しない)
    !== データ型も含めて等しくない
    < より小さい
    > より大きい
    <= 以下
    >= 以上

  • abs()関数・・・引数の絶対値を返します。

  • 文字列と数字の比較
    文字列は0として計算されます。
    先頭が数字であればその数字と比較します。

  • 文字列と文字列の比較
    アルファベット順で最初の文字は後の文字より小さいと判断れます。

  • strcmp()関数・・・第1引数が第2引数より大きい場合は正、小さい場合は負を返します。

strcmp()関数では2桁以上の数字の比較は1番目の数字を比較します。

This image has an empty alt attribute; its file name is image-31.png

アルファベット順で最初の文字は後の文字より小さいと判断れます。

This image has an empty alt attribute; its file name is image-31.png

  • 宇宙演算子<=>は左の値が右より小さいならば負、大きければ正、同じなら0を返します。

  • 論理演算子&&は両方がtureの場合true、論理演算子||は型方がtureの場合trueになります。


  • while文を用いた繰り返し処理です。

※while(条件){繰り返し処理}が記述方法になります。
 $i++は$i = $i + 1と同様です。
 $i += 1と書くこともできます。

  • for文による繰り返し処理になります。
    for(初期処理、条件、後処理){繰り返し処理}が記述方法になります。

繰り返し処理内に条件式を入れてみます。
偶数を表示しています。

4.データのグループ:配列の操作

  • 配列とは関連する値をまとめて扱う仕組みです。
    命名規則は$配列名
    先頭文字はアルファベットもしくは「_」アンダースコアです。
    2文字目以降はアルファベット、「_」、数字です。


キーを指定して特定の要素を取り出すこともできます。

配列を作成後に要素追加も可能です。
キーを指定することもできますし、指定なしだと最後列に挿入されます。

キーを数字ではなく文字列にすることもできます。
連想配列といいます。
以下のように2種類の書き方があります。

  • 配列の各要素を処理するにはforeach文を用います。
    foreach($配列名 as $値の一次的変数名もしくは
    foreach($配列名 as $キーの一次的変数名 => $値の一次的変数名
    のように記述します。{}内に処理を記述します。
    foreach文は要素数分の処理をしてくれます。

  • asort()関数・・・配列の値を基準にしてアルファベット順に並べ替えをしてくれます。キーと値の組み合わせは維持されます。


  • sort()関数・・・配列の値を基準にしてアルファベット順に並べ替えをしてくれます。キーも0から振り直しをしてくれます。


  • ksort()関数・・・配列のキーを昇順に並べ替えをしてくれます。キーと値の組み合わせは維持されます。


  • count()関数・・・配列の要素数を返します。

  • implode()関数・・・配列の要素を文字列連結する関数になります。
    implode(“要素と要素の間の区切り文字”,配列名)のように記述します。

  • explode()関数・・・文字列を分解して配列します。
    explode(“区切り文字”,作成する配列名)のように記述します。


  • 多次元配列を作ってみましょう。


この多次元配列から特定の値を取得するには下記のように記述します。


以下のような記述方法も可能です。


5.ロジックのグループ:関数とファイル

  • 関数定義を覚えましょう。
    ユーザによる独自関数はfunction 関数名(引数){処理内容}となります。
  • 関数を利用するには関数名(引数)と記述します。
    ※8行目参考
  • 関数は呼び出し前と後どちらでも定義することができます。
  • 先頭文字はアルファベットまたはアンダースコア
    2文字目以降はアルファベット、数字、アンダースコアが可能です。
  • 外部ファイルに定義された関数を利用するためにはinclude、require文で宣言する必要があります。
    ※下記2行目を参考


関数の引数にはデフォルト値を指定することができます。
function message($first_name = “samurai”, $family_name = “sakamoto”){}
※呼び出し時に引数を指定しなかった場合に利用されます。

関数から値を返すにはreturn文を利用します。
値は一つしか返せませんが、配列とすれば複数の値を返すことができます。

関数内で定義された変数はローカル変数といわれ、関数内部のみで有効です。
関数の外はグローバル変数と言われます。
以下のように記述しますと$num1 = 1;はグローバル変数としての定義ですので関数内では利用できません。結果エラーとなります。


そのため関数内の変数をグローバル変数として定義しましょう。
globalキワードを用います。


もうひとつは$GLOBALSという定義済みの配列を利用します。
グローバル変数は$GLOBALS配列に格納されます。


6.データとロジックの結合:オブジェクトの操作

  • オブジェクト指向とはクラスと呼ばれる設計図から1つ1つ個別のオブジェクト(インスタンス)を作成します。
  • クラスからインスタンスを作成する場合、newキーワードを用います。
  • クラスのメソッドを利用するにはインスタンス名 -> メソッドと記述します。
  • コンストラクタとはオブジェクトがインスタンスされる時に自動で実行されるメソッドです。
    –constructにて定義されインスタンスのプロパティの初期値を設定します。

※クラスとは役立つ道具を持つ道具セットとらえると良いかと思います。
 PDOはデータベースを制御するために必要な道具(機能)が一式揃っています。
 クラスはnewして使うという決まりがあります。
 newすると分身ができあがって、その分身をインスタンスと呼びます。

  • 例外処理です。
    例外はExceptionクラス(例外処理のクラス)からインスタンスを作成します。
    throw new Exception(“文字列”)
    例外を発生させるためにthrow命令を用います。
    “文字列”$messageプロパティにを代入されます。
    $messageはgetMessage()メソッドで呼び出し可能です。

    書き方はtryブロックに例外が発生するコードを記述します。
    throwされればcatchブロックへ処理が飛びます。
    catchブロックでは例外処理を記述します。
    catchブロックの引数には例外のクラス(Exception)とインスタンス($e)を設定します。
    ※7行目~15行目参考
    ※慣習的に$eを用いることが多いようです。必ず$eでないといけないわけではないです。

    以下サンプルプログラムになります。
    $dateには月なら1、火曜なら2、水曜なら3が入ります。
    つまり6か7なら休日ですので例外処理となり(throwされ)$messageをcatchブロックへ渡します。
    getMessage()メソッドで$messageを呼び出しています。


  • 既存のクラスを引き継ぐサブクラスを作成することによって既存クラスに独自の機能を追加することができます。
    class サブクラス名 extends クラス名 のように記述します。
  • サブクラスのコンストラクタを呼び出した時、親クラスのコンストラクタを自動で呼び出すことはありません。
  • プロパティとメソッドにはアクセス権を付与できます。
    public・・・どこからでもアクセス可能
    protected・・・自身、親、子のみアクセス可能
    private・・・自身のみアクセス可能
  • 名前空間は関連するクラスひとまとめにして扱うものです。
    名前空間が異なればクラス名が重複しても扱うことができます。
    namespace 名前空間名 とファイルの先頭で記述します。



お疲れ様でした。
とりあえず前編は終了です。
本サイトでは筆者が大切と思う要点だけまとめただけですので
合格のためには下記書籍をやり込んでください。

7章から9章の中編はこちらになります。