【2024年最新】PHPの基礎

## はじめに
PHPはサーバーサイドで動作するスクリプト言語で、動的なWebページやアプリケーションの作成に広く使用されています。

ここではPHPの基本的な文法と機能について説明します。

## 目次
* 基本構文
* 変数
* データ型
* 演算子
* 制御構造
* 関数
* 配列
* クラスとオブジェクト
* 例外処理
* ファイル操作
* スーパーグローバル変数

## 基本構文
PHPスクリプトは<?phpで始まり、?>で終わります。PHPタグはHTML内に埋め込むこともできます。

```php
<?php
    echo "Hello, World!";
?>
```

## 変数
PHPの変数はドル記号$で始まります。変数名はアルファベットまたはアンダースコアで始まり、その後にアルファベット、数字、アンダースコアが続きます。

```php
<?php
    $name = "John Doe";
    $age = 30;
?>
```

## データ型
PHPにはいくつかのデータ型があります：

文字列 (string)
整数 (int)
浮動小数点数 (float)
ブール値 (bool)
配列 (array)
オブジェクト (object)
NULL
```php
<?php
    $string = "Hello";
    $int = 42;
    $float = 3.14;
    $bool = true;
    $null = null;
?>
```

## 演算子
PHPは以下のような演算子をサポートしています：

算術演算子 (+, -, *, /, %)
比較演算子 (==, ===, !=, !==, >, <, >=, <=)
論理演算子 (&&, ||, !)
代入演算子 (=, +=, -=, *=, /=)
文字列演算子 (.)
```php
<?php
    $a = 5;
    $b = 10;
    $sum = $a + $b;  // 15
    $concat = "Hello" . " " . "World";  // "Hello World"
?>
```

## 制御構造
### 条件分岐
```php
<?php
    $age = 18;

    if ($age >= 18) {
        echo "You are an adult.";
    } elseif ($age >= 13) {
        echo "You are a teenager.";
    } else {
        echo "You are a child.";
    }
?>
```

### 繰り返し処理
forループ
```php
<?php
    for ($i = 0; $i < 5; $i++) {
        echo $i;
    }
?>
```

whileループ
```php
<?php
    $i = 0;
    while ($i < 5) {
        echo $i;
        $i++;
    }
?>
```

foreachループ
```php
<?php
    $fruits = array("Apple", "Banana", "Cherry");
    foreach ($fruits as $fruit) {
        echo $fruit;
    }
?>
```

## 関数
PHPではfunctionキーワードを使用して関数を定義します。

```php
<?php
    function greet($name) {
        return "Hello, " . $name;
    }

    echo greet("John");  // "Hello, John"
?>
```

## 配列
PHPの配列はarray()または[]で定義します。

インデックス配列
```php
<?php
    $fruits = array("Apple", "Banana", "Cherry");
    echo $fruits[1];  // "Banana"
?>
```

## 連想配列
```php
<?php
    $person = array("name" => "John", "age" => 30);
    echo $person["name"];  // "John"
?>
```

クラスとオブジェクト
PHPはオブジェクト指向プログラミングをサポートしています。

```php
<?php
    class Person {
        public $name;
        public $age;

        public function __construct($name, $age) {
            $this->name = $name;
            $this->age = $age;
        }

        public function greet() {
            return "Hello, my name is " . $this->name;
        }
    }

    $person = new Person("John", 30);
    echo $person->greet();  // "Hello, my name is John"
?>
```

## 例外処理
PHPではtry, catch, finallyを使用して例外処理を行います。

```php
<?php
    try {
        // コードブロック
        throw new Exception("An error occurred");
    } catch (Exception $e) {
        // 例外が発生した場合の処理
        echo 'Caught exception: ',  $e->getMessage(), "\n";
    } finally {
        // 常に実行されるコード
        echo "This will always execute.";
    }
?>
```

## ファイル操作
PHPではファイルの読み書きが可能です。

ファイルを開く
```php
<?php
    $file = fopen("example.txt", "r");
?>
```

ファイルに書き込む
```php
<?php
    $file = fopen("example.txt", "w");
    fwrite($file, "Hello, World!");
    fclose($file);
?>
```

ファイルを読み込む
```php
<?php
    $file = fopen("example.txt", "r");
    $content = fread($file, filesize("example.txt"));
    fclose($file);
    echo $content;
?>
```

## スーパーグローバル変数
PHPには以下のスーパーグローバル変数があります：

``` 
$_GET - URLのクエリパラメータ
$_POST - POSTリクエストのデータ
$_SESSION - セッションデータ
$_COOKIE - クッキーのデータ
$_FILES - ファイルのアップロード
$_SERVER - サーバー情報
$_ENV - 環境変数
$_REQUEST - $_GET, $_POST, $_COOKIE の統合
```

```php
<?php
    // クエリパラメータの取得
    $name = $_GET['name'];

    // POSTデータの取得
    $email = $_POST['email'];
?>
```