phpの基本的な話

##注意書き
本ページは基本的な内容だったり雑多な内容かつ、
へっぽこがphpを業務で触れて知った内容をつらつら書いているだけです。
調べ物をしていて引っかかった場合は即ページバックをどうぞ。
もし基本的な内容が知りたい場合は別ワードで検索してみましょう。
もっといい記事が見つかるはず。時間は有限なので大事にしましょう。


else（それ以外）の方々だけお付き合いください。


###1.PHPで環境構築をしよう
開発ではなにはともあれ環境構築が最初のお仕事です。
下記の手順で行うと良いでしょう。（なんとなく）
1.php
2.apache
3.MySQL
4.XAMPP
5.あとはおすきなエディタ。
6.もっというとあとはお好きなライブラリーをどうぞ
phpunitだったりcalendarだったりphpの便利なライブラリもあるよ。
validationのライブラリなんかは便利だと思います。
（現場によっては魔改造されてるときもあるけど）

いずれもインストール方法はググれば出てきますが、
私が参考にしたサイトを下記に列挙していきます。
・php～apache
https://jyn.jp/php-simple-install-windows/
・Mysql（MaliaDB）
https://webkaru.net/mysql/install-windows/
・DB関連の書き方はこちら
https://qiita.com/7968/items/6f089fec8dde676abb5b
・XAMPP
http://www.webdesignleaves.com/pr/plugins/xampp_01.html


MACの人はMAMPをご使用いただいても良いかもです。
私はMAMP使ったことないので、先人に聞きましょう。
もしわかったらQIITAに書いてください。私も見ます。

余談：maliaDBって何？っというかたはどうぞ
https://wa3.i-3-i.info/word16727.html
MaliaDBのほうがパフォーマンスは良いらしい。（ネットの知識）


###2.上記ができたら書いてみよう
早速phpを書いていきましょう。

適当にファイル用意します。

```php:practice.php
```

続いて、中身を書いていきます

```php:practice.php

<?php

?>
```

これだけです。
これだけでphpのファイルとして動きます。

public static void main(String[]args){}
とかおまじない（おまじないじゃないけども）は要りません。

もう少し書くとすると型宣言なしで下記のようにかけます。

```php:practice.php

<?php
 $i=0;
 $text="php!php!";
 echo($i);
 echo($text);
?>
```
多分これで出力自体はされるはず
（あんまりこれだけで出力するってやったことない。）

さらに発展して。phpはHTMLと同じファイルにかけます。

```php:sample1.php
<!DOCTYPE html>
<html>
　<head>
　　<meta charset="utf-8">
　　　<title>フォームからPOSTで送信されたデータを表示 - サンプルPHP</title>
　</head>
　<body>
　　<form method="POST" action="sample2.php">
　　　<label>名前を入力してください：</label>
　　　　<input type="text" name="onamae" /><br />
　　　　　<label>メールアドレスを入力してください：</label>
　　　　<input type="text" name="mail" />
　　　　<input type="submit" value="送信" />
　　</form>
　</body>
</html>

?>
```

こんな感じのHTML側のソースがあったとして（phpですが）
sample2を作ります

```php:sample2.php
<!DOCTYPE html>
<html>
　<head>
　　<meta charset="utf-8">
　　　<title>フォームからPOSTで送信されたデータを表示</title>
　</head>
　<body>
　　<?php
 　　  echo $_POST["onamae"] ."さんのメールアドレスは". $_POST["mail"] ."です。";
　　?>
　</body>
</html>

```
これでかんたんにフォームデータを画面に描画することできます。
型の指定もなしにHTMLの中にもかけちゃうのでもうよくわからなくなってきます。
安心してください。実際に業務でもログが生命線です（）

もっと基本を知りたい方は先人たちが
ありがたいソースコードや記事を書いてくださってますので
そちらを参考にしてください。
※私の記事は基本的に紹介記事ないしは導入の導入くらいの温度感です。
　ちょっとしたindexにでもなれたらいいなぁくらい。

【PHP超入門】クラス～例外処理～PDOの基礎
https://qiita.com/7968/items/6f089fec8dde676abb5b#pdomysql_attr_init_command%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E8%A8%98%E8%BF%B0%E3%81%AA%E3%81%AE%E3%81%8B

###3.実際に業務で使ってみたりシステムで使って思ったこと

**・セッション管理周り**
phpは$_SESSIONという書き方で
グローバル変数（どのファイルでも使える変数）が使えます。

例えば以下のような書き方

```
<?php
session_start();

print('セッションIDは '.$_COOKIE['PHPSESSID'].' です。');

$_SESSION['username'] = 'tanaka';
echo 'ユーザー名は '. $_SESSION['username'].' 。';

unset($_SESSION['username']);

if (!isset($_SESSION['username'])){
    echo 'ユーザー名は削除されました。';
}else{
    echo 'ユーザー名は '. $_SESSION['username'].' 。';
}
?>
```

参考文献：https://techplay.jp/column/538

ここで使用している$_SESSIONですが開発してて遭遇したのは
＄_SESSIONが消えないという不思議な現象。

session_destroy();
セッションをいかにも消しそうなメソッド（関数）ですが、
これだけではSESSIONが消えてくれない場合があるのです。

```
・セッションの値を初期化する
　$_SESSION = array();
・セッションを破棄する
　session_destroy();
```
これをやらないと消えないのです。理由は不明。
$_SESSION['user_name']の中まで消えないらしい？
大変に便利ですが十分にお気をつけください。
消えない消えないと騒いで2時間くらい発狂してたバカ野郎もいますので。


**・型に気を使う。**
Javaの書き方：

```
String Age = "25";
Age = Age + "1"; 
```
さて、出力結果はなんでしょう？
26って言ったらPHPのやりすぎ。
”251”がJavaでは正解になります。
"25"という文字列に文字列を足しているので
意味合い的には　"あいう"+"えお"みたいな感じです。

ではphpを上記と同じで書くと

```
<?php
$age = "25";
print($age);  //  "25"

$age = $age + 1;
print($age);  // int(26)
```
はい、もう意味がわかりませんでした。（phpを触れたときの私の心境）
Javaでは文字として足されますがphpではそうはいきません。

phpは、理由はしりませんが上記のように
「数字の文字列」を文字列として扱わないという
不思議な言語なのです。
時折IntegerParseIntをしなくて良いとかメリットを感じるときもありますが、
うっかり値を間違えて入れると[false]とかになるので要注意です。

###4.まとめ、総括
php書いてるとJavaの書き方忘れる上に、型宣言が異常にだるく感じます。
適度にJavaのリハビリ推奨。

ゆるふわな内容で恐縮ですが、今回はこのあたりで。
ありがとうございました。