PHP(まとめ)

2021/05/18

個人的によく忘れるPHPの記述についての備忘録です。

 
INDEX

 

1.三項演算子について

三項演算子とは、一つの演算子処理で3つの式を使用するための比較処理です。


### 書式
(条件) ? (真式) : (偽式);

### 実例
# $last_name(名字)があればフルネームで、なければ$first_name(名前)を代入
$last_name ? $name = $last_name." ".$first_name : $name = $first_name;

 

2.変数 命名規則

以下は個人的なルールです。

・「変数名」「メソッド名」「DBテーブル名やカラム名」→ スネークケース
・「クラス名」「コントローラ名」「モデル名」→ パスカルケース
・「プロパティ名(メンバ変数)」→ キャメルケース

この辺りは好みだと思いますが、事前にルールを作っておくと統一感ができて綺麗なコードになると思います。

ちなみにCSSのクラス名はケバブケースがよく用いられます。


# スネークケースの例
# → 単語の間をアンダーバーでつなぐ命名規則
$the_pencil
$a_lot_of_pencils

# キャメルケースの例
# → 複合語をひと綴りで表現し、次の単語の始まりを大文字で表す
$thePencil
$aLotOfPencils

# パスカルケースの例
# → キャメルケースと似ているが、最初の単語も大文字で表す
$ThePencil
$AlotOfPencils

# ケバブケース
# 単語の間をハイフンでつなぐ命名規則
.the-pencil
.a-lot-of-pencils

 

3.例外処理


### 書式
try{
  // 例外が発生する可能性のあるコード
}catch(Exception $e){  
  // 例外が発生した場合に行う処理  
}

 

例外(Exception)が発生する可能性のあるコードには、「例外発生とする条件」「例外を投げるコード」 が入ります。

「例外発生とする条件」は if文 が主に使われます。

「例外を投げるコード」は throw new Exeption() を使います。

※例外が発生することを、例外が投げられる(throwされる)といいます。


### 実例
# 1) 関数を定義
# arg → argument(引数という意味)
function func($arg){
  try{

      // $argが0だったら例外を投げる
      if($arg==0){
        throw new Exception();
      }

      // $argの値を表示
      echo "arg=".$arg;

  }catch(Exception $e){
    echo "例外をキャッチ";
  }
}

# 2) 関数を呼び出す
func(10); // 出力結果:arg=10
func(0);  // 出力結果:例外をキャッチ

 

例外メッセージ

例外には例外メッセージを持たせることができます。


### 構文
throw new Exception(例外メッセージ);

###実例
try{
  // 文字列 exception!! を投げる
  throw new Exception('exception!!');
} catch(Exception $e){
  // getMessage で例外メッセージを取得
  echo $e->getMessage();
}

# 実行結果
exception!!

 

例外処理については以前にもエントリーしたことがあるので、詳しくは以下をご参照ください。

 

4.見出しコメントの書き方

PHPでファイル全体の説明やクラス・メソッドの説明をする際は、PHPDocという記法を使って記述します。

 

ファイルの説明

/**
* 1行で処理の内容を記述
*
* 1行空けてもう少し詳しく記述することができる
* 複数行記述ができて、不要なら省略もできる
*
* @author 名前 <メールアドレス>
*  
*/

開始の **必ず二つなので気をつけてください。
終了の * はひとつで十分です。

 

クラス・メソッドの説明

/**
* 1行で処理の内容を記述
*
* @param int $example    第一引数の説明文をここに入れます。
* @param string $example2 第二引数の説明
*/

 

ブロックごとの処理

/*
|-----------------------------------------
|     入力処理
|-----------------------------------------
*/
if ($passwd == $_POST['passwd']) { 
:

# ----------------------------------------
#     入力処理
# ----------------------------------------
if ($passwd == $_POST['passwd']) { 
:

/*---------------------------------------
 *    入力処理
 *---------------------------------------*/
if ($passwd == $_POST['passwd']) { 
:

//----------------------------------------
//    入力処理
//----------------------------------------
if ($passwd == $_POST['passwd']) { 
:

 

5.データ型

PHPは、型の宣言が必要ないプログラムと呼ばれたりもします。

型とは、変数の中に代入する値の種類を表します。

データ型 内容
string 「りんご」「ばなな」などの文字列です。
int(integer) 1や100などの整数型。
float 浮動小数点です。(※大抵のプログラミング言語では、小数は浮動小数点として扱われる)
bool true か false のどちらかです。(論理型)
array 配列型
object オブジェクト型
void 返り値の型が void である場合、返り値に意味がないことを表します。

 

データ型判別関数

PHPにはデータ型を判別する関数が用意されてあります。

型がマッチすると論理値「TRUE」を返し、そうでない場合は「FALSE」を返します。

関数 内容
is_string() 文字列型かどうかを調べる
is_int() 整数型かどうかを調べる
is_float() 浮動小数点型かどうかを調べる
is_object() オブジェクト型かどうかを調べる
is_array() 配列型かどうかを調べる
is_resource() リソース型かどうか調べる
is_null() NULL型かどうか調べる

 

6.アクセス修飾子

アクセス修飾子とはプロパティやメソッドに「どこからアクセスできるか?」を指定するものです。

指定には「public」「private」「protected」の3つのどれかを指定します。


### 実例
class AdminAuthController extends Controller
{
  # クラス内、クラス外のどこからでもアクセス可能
  public $userName = 'email';

  # 同じクラス内からのみアクセス可能
  private $userName = 'email';

  # 同じクラス、および子クラスからアクセス可能
  protected $userName = 'email';
}

 

7.エラー制御演算子

PHPでの @(アットマーク)はエラー制御演算子と言います。

関数や変数の前につけます。これを付けた関数や変数ではエラーを出力しないようにします。


### 実例
## 「input.txt」が存在しない場合、Warningが表示される
file_get_contents("input.txt");

# 表示画面には以下のようにエラーが表示される
PHP Warning: file_get_contents(input.txt): failed to open stream: No such file or directory in …略….php on line 2

## 「input.txt」が存在しなくてもエラーメッセージは表示されない
@file_get_contents("input.txt");

 

8.エラー関係

エラーは大まかに3種類あります。

出力エラー 内容 対処
syntax error(シンタックス・パースエラー) コンパイルが出来ない(実行前で止まる) 文法の間違いなどでコンパイル出来ないなど
fatal error(フェイタルエラー) 実行が停止するもの 定義していない関数を呼び出そうとした場合など
warning(警告)、notice(注意) 実行は継続されるが警告の出るもの 初期化してない変数をいきなり使ったりなど
【 エラーの重要度 】
E_PARSE > E_ERROR > E_WARNING > E_NOTICE > E_DEPRECATED
(※E_DEPRICATEDはコーディング規約に関しての問題や将来廃止になる(非推奨)機能が使われている場合に発生)

 

9.擬似変数

クラス内でメンバ変数が定義されている場合、疑似変数 $this を使用することで、クラスの変数にアクセスすることができます。


class SampleClass{
 // プロパティ
 public $val = 'Laravel';

 // メソッドの宣言
 public function SampleMethid(){
   // メソッドのローカル変数
   $val = 'CakePHP';

   // 擬似変数を出力
   echo $this->val;
 }
}

// インスタンスの生成
$class = new SampleClass();

// メソッドの呼び出し
// 出力結果:Laravel
$class->SampleMehod();

 

サンプルでは SampleClass のプロパティ(Laravel)とメソッドのローカル変数(CakePHP)で、同じ変数名($val)を定義しています。

たとえクラスとメソッドで同じ変数が定義されていても、thisを使用すればクラスのプロパティを参照することができます。

 

10.配列の取り出し方

PHPの配列に関しては別ページでもまとめています。

$array は配列
$value$array に入っている要素
$key は配列の番号

#-------------------------
# 一次元配列
#-------------------------
foreach($array as $value){
  実行処理文
}

# 例
$fruit=array("りんご","オレンジ","ぶどう")
foreach($fruit as $value){
  echo $value."
"; } # 出力結果 りんご オレンジ ぶどう #------------------------ # 連想配列 #------------------------ foreach($array as $key => $value){ 実行処理文 } # 例 $fruit=array("apple"=>"りんご","orange"=>"オレンジ","grape"=>"ぶどう"); foreach($fruit as $key => $value){ echo $value."は英語で書くと".$key."です
"; } # 出力結果 りんごは英語で書くとappleです オレンジは英語で書くとorangeです ぶどうは英語で書くとgrapeです

 

繰り返し処理をしてくれる for文 や while文 でも使われる、break と continue では、foreach文 でも使うことができます。
・break は繰り返しを中断する
・continue は繰り返しの途中でスキップする

 

11.比較演算子

比較演算子では演算子の左辺と右辺を比較し、「等しいか?」「大きいか小さいか?」などを評価します。

その結果として真(true)か偽(false)の値を取ります。

PHPで使用する比較演算子は次の通りです。

演算子 解説
$left == $right $left と $right が等しい時に true
$left != $right $left と $right が等しく無い時に true
$left > $right $left が $right より大きい時に true
$left < $right $left が $right より小さい時に true
$left >= $right $left と $right が小さいか等しい時に true
$left <= $right $left と $right より小さいか等しい時に true
$left === $right $left と $right が等しく、かつ同じデータ型の場合に true

 

12.論理算子

複数の比較演算子の結果を組み合わせて評価する場合に使用されます。

そのため、論理演算子の $left や $right には比較演算子の結果などが入ります。

そして左辺と右辺の比較演算子の結果を組み合わせた結果として真(true)か偽(false)の値を取ります。

演算子 解説 別名
$left && $right(論理積) $left と $right が共にtrue の場合に true and
$left || $right(論理和) $left か $right のどちらかがtrue の場合に true or
!$right(論理否定) $left が trueで無い場合に true not

if($num > 10 && $num < 20){
  echo '10よりも大きく20より小さい値です。';
}

// 上と同じ意味
if($num > 10 and $num < 20){
  echo '10よりも大きく20より小さい値です。';
}

このほかに、( ) でくくる方法があります。この方法を利用すると条件が複雑化したときに分かりやすく書くことが出来ます。


// 「aまたはb」が true かつ「cまたはd」が true
(a || b) && (c || d)

 

 

13.条件に応じて処理を分ける(switch)


$str = "apple";

switch($str){
  case "apple": //strが「apple」のときに実行
    print "リンゴ";
    break; //switch文から抜ける
  case "banana":
    print "バナナ";
    break;
  default:
    print "翻訳できませんでした。";
}

【if文とswitch文の使い分けのポイント】
・単純な2分岐であれば、if文を使う
・多分岐(3分岐)以上であればswitch文を使う

 
 
また発見したら追記していきます。

 

独習PHP 第3版

作者の山田 祥寛さんはJavaやJavaScriptなどの本も出されている方です。どの本も説明が丁寧でとても分かりやすいと定評があります。独習シリーズはいろいろな言語で出版されており、何かしら読んだことがある人も多いと思います。PHP をきちんと理解していないと Laravel は理解できません。これから Laravel で開発をしていく人は、もしもの(行き詰った) 時のために一冊購入してみてはいかがでしょうか?

Amazonで詳細を見る

オススメ

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-周辺知識