PHPの記法メモ2

ドットインストールのPHP入門を一周したのでPHPの関数や記法の自分用まとめ。

#変数の種類を調べる
引数の内容を文字列として返す。
```var_dump("hoge");```

→String(4)　※4は文字数
#関数の宣言
```function hogef(引数){
　　　処理
}```

#文字列系関数

##乱数生成

1~10の範囲で乱数を返す
```rand(1,10);```

##文字列を数える

1バイト文字
```strlen("hoge");```
hoge→4

マルチバイト文字
```mb_strlen("ねこ");```
ねこ→2

#配列系関数
配列の要素数を返す
```count($arrayhoge);```

配列の要素全部を"☆"で区切りながら返す
```implode("☆",$arrayhoge);```

#クラスとインスタンス
##インスタンスの宣言
```$kinako = new Neko("kinako")```

##コンストラクタ
```public function __construct($name){
   $this->name = $name;
}```

##インスタンスへのアクセスの仕方
``$hoge->hogefunc();
$hoge->name;``
"->"を使う。（Javaだとhoge.hogefunc();）
頭に$をつけていたら->以降$は必要ないらしい。

#アクセス修飾子
##final
overrideできなくなる

##private
そのクラス内からのみアクセス可能

##protected
そのクラス内＋親子関係のみ

#staticアクセス
"クラス名::メソッド名"という書き方をする。
```Cat::getNagasa();```

##インスタンス内から自クラスのクラス変数にアクセス
"self::変数名"という書き方をする。
```self::$hoge++;```

#抽象クラス
``abstract class Cat{
 abstract public function meow();
}``

#クラスファイルを分ける
同じフォルダに"name.class.php"という形式で保存
別のファイルからアクセスする際には予め読み込む処理を行わなければならない。

##ファイルを読み込む処理
###require
ファイルを読み込む。もし読み込めなかった場合はExceptionを発生させる。
###require_once
requireと同じようにファイルを読み込むが、その後同じファイルを読み込めないようにする。
###include
ファイルを読み込むが、もし読み込めなかった場合は無視して処理を続行する。
###include_once
includeと同じようにファイルを読み込むが、その後同じファイルを読み込めないようにする。

```require "Hoge.class.php";
$mhoge = new Hoge();```
というようにセットで書く。
###autoload
includeやrequireは、使用するクラス一つ一つに対応して書いていかないといけないので手間がかかる。
なので、newした時点でクラスファイルが読み込まれていなかったら行うautoloadという仕組みがある。

``spl_autoload_register(function($class){
 	require $class .".class.php";
 });``

このように書いておくとある程度requireやincludeを自動化することができる。


##名前空間
class宣言の前に
``namespace Catcodes\Study\;``
と書いておくと、Javaで言うパッケージ宣言ができる。

この場合は、使用クラスのほうでは
`$hiyoneko = new Catcodes\Study\Cat("ながい");`
という風に書くとその名前空間のクラスを使用することができる。

###名前空間の簡略化

``use Catcodes\Study\;``

または

``use Catecodes\Study\ as Piyo;``

前者を使用する場合は

`$hiyoneko = new Study\Cat("長い");`

後者を使用する場合は

`$hiyoneko = new Piyo\Cat("長い");`

`as hoge ~;`と書くことで、使用時の名前空間の記述を簡略化することができる。
`as hoge~;`がない場合は前者の場合だと、`as Study`と書いた場合と同じようになるらしい。

#html周り

## ``<form>``
```<form action = "" method ="POST"></form>```

###action
送信先(hoge.php等)空欄の時は書かれているファイル自体に飛ぶ。
###method
データの送信方法の指定
###POST
フォームの内容を送信先に送る

##``<input type ="text">``
```<input type="text" name="id" placeholder="user name">```

<input type="text" name="id" placeholder="user name">
このようなテキスト入力ボックスを表示することができる。
###name
テキストボックスの名前。
###placeholder
初期表示。

##``<input type="submit">``
```<input type="submit" value="button">```
<input type="submit" value="button">
このような送信ボタンを表示することができる。
###value
ボタンに表示する文字。

#簡単な状態保存をする機能
##setcookie（ブラウザに値を保存する）
``setcookie("username","hiyorineko",time()+20;
echo $_COOKIE['username'];``

setcookie(変数名,値,有効期限(秒));
setcookieした後は他のファイルからでも同じ変数名でアクセスができる
有効期限を-にしたら削除をすることができる。

![cookie.PNG](https://qiita-image-store.s3.amazonaws.com/0/109506/073801d1-a876-5e46-65e6-4261924e7e8d.png)


##session(サーバー側に値保持)
``session_start();
$_SESSION['username'] = "hiyorineko";
echo $_SESSION['username'];
unset($_SESSION['username']);``

`session_start();`を書いてセッションを開始。変数の指定は`$_SESSION['変数名'];`という書き方をする。
`unset($_SESSION['変数名']);`とすることで、保存された変数を削除することができる。

![sessions.PNG](https://qiita-image-store.s3.amazonaws.com/0/109506/ac1daeb0-7dd5-9c65-5a5f-4354ae52de67.png)