PHPの基本

## PHPを学ぶに際し作成。基本というより、メモです。

### 変数

・頭に"$" をつけて宣言

・最後は";" が必要

・数字で始まる変数名はNG



### 足し算（算術演算）

```
$x = 1;
$x = $x + 10;
echo $x;
//結果：11
```

Ruby同様。

任意の数値と該当の変数との演算には代入演算子も使用できる。

　例）" += ", " -= ", " *= ", " /= ", " %= "

プラマイ１のときは、インクリメント・デクリメント演算子も使用できる。

　例）" ++ ", " -- " 

　ちなみに、位置によって若干意味がことなるのでメモ。

```
echo ++$x;   //←+1してからechoする
echo $x++;   //←echoしてから+1する
```



### 文字列

文字列を記述する際は、シングルクォーテーション「''」または、ダブルクォーテーション「""」で囲む。

・「""」の場合、「¥n」や「¥t」等の特殊文字が利用できる

・変数展開ができる

```
例）
$name = 'Taro';
echo "こんにちは、{$name}さん";
//結果：こんにちは、Taroさん
```



### 文字列の結合

結合にはドット「.」を使用する。

```
$language = 'PHP';
echo $language.'入門';
//結果：PHP入門
```

代入演算子「.=」も使用できる。



### 条件分岐

論理演算子「&&」や「||」が使用できる。

#### if

```
if (条件){
	処理1;
}elseif{
	処理2;
}else{
	処理3;
}
```

#### switch

```
switch(変数){
	case 判定値1:
		処理1;
		break;
	case 判定値2:
	　〜〜;
	default:
		〜〜;
}
```

### 配列

```
$names = array('John', 'Kate', 'Bob');
              // [0]     [1]    [2]　←インデックス番号
$names[] = 'Mary';
$names[1] 'Taro';  //「Kate」が上書きされる。
```



### 連想配列

array()などを利用し、”「キー」=>「値」”の要素を作成して連想配列を作成する。

```
$user = array('name' => 'Taro',
							'age'  => 25);
echo $user['name'];
//結果：Taro

$user['level'] = 'beginner'; //←キーと値のセットを追加
```



### 繰り返し

### for

```
for ($i=1; $i<=100; $i++){
	//初期化;ループ条件;変数の更新
	echo $i; //処理
}
```



### while

```
$i = 1;  //初期化
while ($i<=100){  //ループ条件
	echo $i;  //処理
	$i ++;  //変数の更新
}
```



### break

ループを強制的に中断する命令。

### continue

現在の週だけをスキップする命令。ループは継続させる。

スキップする階層数を指定する場合、「continue」の後に「階層数」を記述する。

　例）continue 3;　※「continue;」=「continue 1;」



### foreach

```
foreach (配列 as 値変数) {
			//　↑または連想配列
			処理;
}
```

```
foreach (配列 as キー変数 => 値変数) {
			//　↑または連想配列
			処理;
}
```



### 関数

phpで利用できる関数を適当にピックアップ。

・strlen(~~~);　←文字列の文字数

・count(~~~);　←配列の要素数

・rand(1,3);　←1〜3のランダムな整数を返す

・array_sum(~~~);　←配列の合算値を返す

・var_dump(~~~);　←変数の型と大きさ（値）を返す



### 定数

定数の宣言にはdefine() を使用する。数字から始まる変数名はNG。

```define ( 定数名, 値 ) ;```







## 

### fromタグ

```
<from action="URL" method="POST" >

	//テキストボックス
	<input type="text" name="email">
										//入力データに名前をつける
	<textarea name="content"></textarea>
					//入力データに名前をつける //閉じタグが必要
					
	//送信ボタン
	<input type="submit" value="送信">
</from>
```







### フォームデータの受け取り

```
<? php echo $_POST['~~~']; ?>
```

・「$_POST」を使用する

・「$_POST」は連想配列になっており、[ ]内にname属性を入力する



### セレクトボックス

```
<select name="fruit">
	<option value="apple">りんご</option>
	 ・
	 ・
</select>
```



### require_once

これにより、別のPHPファイルを１度だけ読み込む。

```menu.php
~~~~~~~~~~~~;
~~~~~~~~~~~~;
```

```data.php
<? php
	require_once('menu.php');
	~~~~~~~~~~;
?>
```

```index.php
<? php
	require_once('data.php');
	~~~~~~~~~~;
?>
```



### プロパティ（クラス内）

```
class Menu{
	public $name;  //宣言
}
```

```
$ curry = new Menu();  //←インスタンス作成
$ curry->name = 'CURRY';  //←プロパティに値をセット
echo $curry->name;
//結果：CURRY
```



### メソッド

```
class Menu{
	public function hello(){
		echo '私はMenuインスタンスです！';
	}
}
```

```
$ curry = new Menu();
$ curry->hello();  //メソッドの呼び出し
//結果：私はMenuインスタンスです！
```



### this

「$インスタンス名->プロパティ名」は、

「$this」で代用可能。



### コンストラクタ「__construct」

インスタンス作成（new）時に、自動的に実行されるメソッド。（rubyではinitialize ?）

```
class Menu{
	public function __construct(){
													//　↑newする時の引数を渡すことができる。
		//処理;
	}
}
```



### クラスプロパティ

```
class Menu{
	public static $count = 4;
	//staticを付けることでクラスプロパティになる。
}

echo 'メニュー数'.Menu::$count.'品';
									//アクセスするにはコロン２つ
```

### self

クラス内でプロパティクラスにアクセスするとき、「self」という変数が使える。

```
public function __construct(~~~){
								//コンストラクタ
	self::$count++;
	//self はMenu クラスを意味する。
}
```



### クラスメソッド

```
class Menu{
	private static $count = 0;
	public static function getCount(){
		return self::$count;
							//アクセスするにはコロン２つ
	}
}

//呼び出し
echo Menu::getCount();
```



### 継承

```
class 子クラス名 extends 親クラス名{
}
```



### instanceof

インスタンスが特定のクラスのインスタンスかどうか、判定できる。

```
$ coffee = new Drink('COFFEE',....);
if ($coffee instanceof Drink){					//true
	echo 'Drinkクラスのインスタンスです。'
}
if ($coffee instanceof Food){					//false
	echo 'Foodクラスのインスタンスです。'
}
```



### protected

・public 変数名;    //←どこからでもアクセス可

・protected 変数名;    //←子クラスからアクセス可

・private変数名;    //←子クラスからもアクセス不可



### parent

オーバーライドしたメソッド内で、親クラスの同名メソッドを呼び出す時に使用する。

```
class Drink extends Menuy{
	//オーバーライドしたコンストラクタ（引数４つ）
	public function __construct(~,~,~,~){
		//オーバーライドされた、親クラスのコンストラクタ（引数３つ）の呼び出し
		parent::__construct(~,~,~);
		$this->type = $type;
	}
}
```

### foreach をHTMLに埋め込む

```
<?php $words = array('apple','banana','orange'); ?>

<?php foreach($words as $word): ?>
	<p><?php echo $wodd ?></p>
<?php endforeach ?>
```

foreach を利用する際の「{」「}」はそれぞれ、「:」「endforeach」で置き換えて記載する。

endforeach の他には、「endif」「endfor」等がある。