PHP¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. PHPとは¶
記入中...
02. セットアップ¶
インストール¶
▼ aptリポジトリから¶
# 外部リポジトリをインストールする。
$ apt -y install software-properties-common
# PHPのリポジトリを登録する。
$ add-apt-repository ppa:ondrej/php
$ apt-get update
# PHPをインストールする。
$ apt -y install php=1.0.0
Dockerfile¶
▼ Laravel、PHP-FPMを使用する場合¶
#===================
# Global ARG
#===================
ARG PHP_FPM_VERSION="<バージョン>"
ARG PHP_COMPOSER_VERSION="<バージョン>"
ARG LABEL="Hiroki <example@gmail.com>"
#===================
# Base Stage
#===================
FROM php:${PHP_FPM_VERSION}-fpm as base
RUN apt-get update -y \
&& apt-get install -y \
git \
vim \
unzip \
zip \
&& docker-php-ext-install \
bcmath \
pdo_mysql \
&& apt-get clean
COPY --from=composer:${PHP_COMPOSER_VERSION} /usr/bin/composer /usr/bin/composer
#===================
# Development Stage
#===================
FROM base as development
LABEL mantainer=${LABEL}
#===================
# Production Stage
#===================
FROM base as production
LABEL mantainer=${LABEL}
COPY ../software /var/www/foo/
03. 拡張機能¶
OPcache¶
▼ OPcacheとは¶
通常、PHPのコードは実行の度にバイナリ形式のコードに変換される。
バイナリ形式のコードのキャッシュを作成しておき、コードが変更された時だけ変換する。
これにより、PHPのコードの実行が高速化される。
04. 実装スタイル¶
オブジェクト指向型¶
振る舞いは内部に状態を持つ。
副作用はあってもなくともよい(同じ入力の時に、出力は同じでも異なってもよい)。
状態と振る舞いが結合している。
ほかの型と共存できる。
<?php
class User {
// オブジェクトの状態を設定する
public string $name;
public int $age;
public function __construct(string $name, int $age) {
$this->name = $name;
$this->age = $age;
}
// 振る舞い
public function isAdult(): bool {
return $this->age >= 18;
}
}
$user = new User("Alice", 20);
echo $user->isAdult() ? "true" : "false"; // true
関数型¶
振る舞いは状態をもたず、外部から状態を注入する。
副作用をなくす必要がある(同じ入力であれば、出力も同じである)。
状態と振る舞いが分離している。
ほかの型と共存できる。
<?php
// オブジェクトの状態を設定する
$user = [
"name" => "Alice",
"age" => 20,
];
// 振る舞い
function isAdult(array $user): bool {
return $user["age"] >= 18;
}
echo isAdult($user) ? "true" : "false"; // true