PHPあれこれ

About

プログラミング言語PHPに関するメモ用ページ。

reference

php(1)

文法

よく使う関数

型システム

  • 変数宣言時に型の宣言は強制されない。*1また、暗黙的に型変換が実行される。
  • PHP7から、厳格に型を検査するstrict modeが導入された

名前空間

  • namespace 命令で宣言
  • クラス名の衝突を避けるための機能
  • 階層化ができる。デリミタにはバックスラッシュ \ が使われる
  • 同一名前空間内であれば、名前空間(アドレス)を省略して呼び出すことができる
  • 言語上のルールではないが、実際のクラスファイルが置かれているクラスパスと合わせることが推奨されている*2

userequire_once

アンダースコアから始まる変数は何か

アンダースコア×2から始まるメソッドは何か

  • こういうの → public function __set(string $name, mixed $value) : void {}
  • マジックメソッドと呼ばれるタイプのメソッド。詳細は、『独習PHP 第4版』P555を参照

PHPがWebサーバー上で動作する仕組み

apcheとNGINXで異なる模様。apacheの場合は以下。

PHPをインストールすると自動的にPHPモジュールもインストールされApacheはデフォルトでそのPHPモジュールを読み込みにいく https://zenn.dev/bs_kansai/articles/3706c12408160c

上記に該当するのが以下と思われる。

$ apache2ctl -M | grep -i php
 php7_module (shared)

また、php-fpmで動かす場合は、上記とは異なりブラウザと別プロセスでPHPが実行される。

https://qiita.com/kouki_o9/items/4a88cdc30c604373e9ac

UbuntuへのInstall

まず、PPAリポジトリを追加する。 ※apache2を使うため、 ondrej/apache2 も入れてみたが必須かどうかはよくわかっていない

$ sudo add-apt-repository ppa:ondrej/php
$ sudo add-apt-repository ppa:ondrej/apache2

次にPHP7.3をinstallし、動作確認する。

$ sudo apt install php7.3 php7.3-common php7.3-cli php7.3-fpm php7.3-sqlite php7.3-mysql php7.3-dev php7.3-mbstring php7.3-zip php7.3-curl php7.3-gd php7.3-xml php7.3-intl php7.3-fpm

$ php -v
PHP 7.3.33-16+ubuntu22.04.1+deb.sury.org+1 (cli) (built: Apr 11 2024 22:12:07) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.33-16+ubuntu22.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

composer

comoserはPHPにおいて利用されるパッケージマネージャーである。

install方法

composerの公式ページの手順を実施する。

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Installer verified

$ php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 2.7.3) successfully installed to: /tmp/composer.phar
Use it: php composer.phar

$ php -r "unlink('composer-setup.php');"

$ sudo mv composer.phar /usr/local/bin/composer

$ which composer
/usr/local/bin/composer

$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.7.3 2024-04-19 21:40:57
(略)

技術情報:日本語の登壇資料

年に一度、PHP KAIGIというカンファレンスが開催されており、登壇資料&アーカイブ動画が公開されている。

*1:そのため、initialize処理を読まないと意図している型がわからないことも多い。

*2:『レベルアップPHP』5.4.

/* https://sunrise033.com/entry/hatena-blog-how-to-hierarchicalize-categories */