PHP/Laravelの書き方の基本ルールまとめる(PHPフレームワークLaravel入門に入る前に）

#PHPの基本ルールまとめる(PHPフレームワークLaravel入門に入る前に）

参考書「[PHPフレームワークLaravel入門](https://www.amazon.co.jp/dp/B07CLLW4MX/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)」に入る前にPHPで抑えるべき項目をまとめていきます。
こちらの項目をまとめるにあたって、「[PHP7＋MySQL](https://www.amazon.co.jp/%E8%A9%B3%E7%B4%B0%EF%BC%81PHP-MySQL-%E5%85%A5%E9%96%80%E3%83%8E%E3%83%BC%E3%83%88-%E5%A4%A7%E9%87%8D-%E7%BE%8E%E5%B9%B8-ebook/dp/B01HO61ZY2/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=PHP7+MySQL&qid=1592791612&s=digital-text&sr=1-1)」を利用します。
（もし、間違っている点等ございましたら気軽にご教授していただければ幸いです。）



１、ほんまの基本ルール
２、関数
(↑今回はここまで)
３、文字列
４、配列
５、クラス


#1、ほんまの基本ルール(丸暗記ゾーン)

```記述例.php
$Box="aka"
$box="ao"
<?php
//あいさつ
echo "みなさん、";
ECHO $box;
echo $Box;
?>
```


```出力例.html
みなさん、akaao
```


####覚えること
・開始タグ終了タグ

```
<?php ?>
//phpの記述を動作させるもの
```

・命令文の区切り

```
;#セミコロン
//phpの命令文の文末ごとに書く
```

・出力命令

```
echo
//[echo 文字列]という並びで書くことで文字列(文字や変数など)を出力できる
```


・大文字と小文字の区別
区別あるもの…変数名/定数
区別がないもの…関数/クラス

コメント

```
#//
//コードの文頭に置くことで記述内容がプログラムとして読み取られなくなる
```

・空白と改行について
無視される

変数

```
$〇〇
#英字またはアンダーバーを用いて記入
//値の一時的な保管と計算式の処理を記述したい時に用いる
```

#２、関数
##関数とは
まとめた処理を定義したものを関数と呼ぶ。
関数は元から定義されているものもあるが、ユーザー側で定義することが可能。

##関数の基本
関数の定義方法

```
function 関数名(①引数、②引数…){
　処理
　return 戻り値;
}
```

```
関数の出力方法
関数名(①引数に与える値、②引数に与える値…)
```

####解説
引数…関数内部で利用する値を与える。こちらは定数でも変数でも可能。
戻り値…関数を利用して導き出した値を戻り値又は返り値と呼ぶ。
return…関数の中で処理した結果の値を関数を呼び出した場所に返す。関数の中で定義した変数は関数の中でしか有効ではない。



```記述例.php
<?php
function price($tanak,$kosu){
   $souryo = 250;
   $ryoukin = $tanka * $kosu;
   
if ($ryoukin<5000){
  $ryoukin += $souryou;
}
return $ryoukin;
}

  $kingaku1 = price(2400, 2);
  $kingaku2 = price(1200, 5);
  echo "金額1は{$kingaku1}円"."<br>".PHP_EOL;
  echo "金額1は{$kingaku2}円";
?>

```



```出力例.html
金額1は5050円<br>
金額2は6000円
```

####解説
{}…変数をで囲って出力することで前後に空白をあけずに表示できる。
.(ピリオド)…文字列を連結できる。連結した文字列は同時に表示される
PHP_EOL…改行させたい文字列に連結させる。そうすることで改行される。（ターミナル上での話です）
< br>…改行させたい文字列に連結させる。そうすることで改行される。（ブラウザ上での話です）




##関数応用１〜初期値の設定〜
引数に与える値を事前に決めることができる。利用する関数の引数が多く重複する際に便利

```初期値の設定方法.php
function　関数名(引数1=初期値1,引数2=初期値2…){
     処理
     return 戻り値;
}
//全ての引数に初期値を設定する必要はないが、初期値を設定する引数は最後に記述する必要がある
```


```記述例.php
<?php
function charge($rank, $days=1) {
    switch ($rank){
      case "A":
        $ryoukin  = 150000 * $days;
        break;
      case "B":
    default:
        $ryoukin =  12000 * $days;
        break;
}
    return $ryoukin;
}

  $kingaku1 = charge("B",2);
  $kingaku2 = charge("A");//②引数の宿泊数を省略
  echo "金額1は{$kingaku1}円"."<br>".PHP_EOL;
  echo "金額2は{$kingaku2}円";
?>
```

```出力例.html
金額1は24000円<br>
金額2は15000円
```

####解説
switch文(重要)
式の値によって処理を分岐したい場合に利用。

```switch文使い方.php
switch(式){
   case 値1:
   処理A
　　break;
   case 値2:
   処理B
　　break;
   case 値3:
   処理C
　　break;
   default
   処理D
   break;
//defaultに関しては式にcaseが対応できる値が入らなかった時処理が実行される。
```
今回の例文の説明

```.php
$kingaku1 = charge("B",2);
```
charge("B",2);にて$rankへBが引き渡される
switch文により**$rank**が**B**の時出力される24000円が表示される。

##関数応用2〜引数と返り値の設定〜
関数に設定する引数および戻り値に対してデータの型(値の形式)を指定できます。

```データの型.html
・array　
配列(一つの変数にいくつかの値が格納されているもの）
・call　
コールバック関数(引数として利用可能なもの）
・bool
プール値(真[true]か偽[false]のどちらかが入ってる)
・float　
浮動小数点数(float、double、実数)
・int　
整数値
・string　
文字列
・クラス名/インターフェース名　
指定のクラスのインスタンス
・self　
インスタンス自身
```

```記述例.php
<?php
function twice(int $var){
    $var *= 2;
    return $var;
}

$num = 10.8;
$result = twice($num);
echo "{$num}の2倍は",$result.;
?>
```

```出力例.html
10.8の2倍は20
//$varに渡された$numがintが適応され整数値に変更される。(10.8→10)
```

##関数応用3〜関数においての変数の定義の範囲〜
変数には値が有効な範囲があります。

```記述例.php
<?php
$kosu = 2;

function price(){
   $ryoukin = 250 * $kosu;
   echo "{$ryoukin}円です。";
}

  echo "{$kosu}"個で";
  price();
  ?>
```

```出力例.html
2個で0円です。
```

####解説
関数内の処理で関数外の変数を利用することは通常できない。
つまり、**$tax**は関数外部では**0.08**だが、関数内部では**0**になっている。

###関数内の処理で使用した変数を利用する方法
####グローバル変数
関数内の処理で関数外の変数を利用することができるようになる。

```グローバル変数定義方法.html
global $変数名;
//関数の処理を記入する文頭に利用したい変数名を記入する。
```
```記入例.php
<?php

$tax = 0.08;

function taxPrice($tanka, $kosu){
  global $tax;
  $ryoukin  = $tanka * $kosu * (1+$tax);
  echo "{$ryoukin}円です。";
}

taxPrice(250, 4);
echo "税込み".$tax*100,"%";
?>
```

```出力例.html
1080円です。税込み8%
```

##関数応用4〜高度な関数の使い方〜

###値渡し
関数で指定した引数は、実際に値が渡されているわけではなく、あくまで値がコピーされているだけである。そのため、関数内部でしか変数が変化することはない。これを**値渡し**という。

###参照渡し
値渡しではなく、関数で指定した引数を同じの変数として扱うこともでき、参照渡しと呼ぶ。引数の文頭に[&]をつけることにより利用できる。

````参照渡し例文.php
<?php
function oneUp(&$var){
    $var += 1;
}

$num = 5;
oneUp($num);
echo $num;
?>
```

```出力例.html<?php
6
//&を$varにつけなければ出力結果は5になる
```

###無名関数
ユーザー定義関数は名前をつけずに定義することも可能。

````無名関数例文.php
<?php
$myFunc = function($who){
  echo "{$who}さん、こんにちは！";
};

$myFunc("田中");
?>
```

```出力例.html
田中さん、こんにちは！
```
上記のように、関数名を記述してない関数を変数に代入することで利用が可能。
出力の際は、$変数名(引数)と記述することで出力ができる。


#基本＋関数についての説明は以上です！ここまで読んでくださった方ありがとうございました。次回は文字列に入ります！