PHP(まとめ)

2020/08/03

個人的によく忘れる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 strng $example2 第二引数の説明
*/

 

ブロックごとの処理

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

 

5.データ型(引数/返り値)

データ型(引数/返り値) 内容
string 文字列を受け入れる/文字列型を返す
int 整数型を受け入れる/整数型を返す
float 浮動小数点型を受け入れる/浮動小数点型を返す
bool 論理型を受け入れる/論理型を返す
number 整数型または浮動小数点型を受け入れる/整数型または浮動小数点型を返す
array 配列型を受け入れる/配列型を返す
object オブジェクト型を受け入れる/オブジェクト型を返す
array|object 配列型またはオブジェクト型を受け入れる/配列型またはオブジェクト型を返す
mixed 複数のデータ型を受け入れる(パラメーター)、あるいは返す(返り値)ことが可能。全てのデータ型ではありません。
<例>
・gettype関数 全ての型を受け入れる
・str_replace関数 文字列型と配列型のみを受け入れる
・resset関数/end関数 返り値に配列型と論理型(FALSE)を返す
void パラメーター一覧で void が使用されている場合、その関数がパラメータを受け付けないことを表します/返り値の型が void である場合、返り値に意味がないことを表します。
callback callback 疑似型がこのドキュメントで使われていたのは、PHP 5.4 で callable タイプヒントが導入される前のことでした。両者はまったく同じ意味です。

 

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を使用すればクラスのプロパティを参照することができます。

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

 

独習PHP 第3版

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

Amazonで詳細を見る

オススメ

 

本庄マサノリ

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

>> Twitter をフォローする

 

-周辺知識