[https://www.shuwasystem.co.jp/book/9784798047492.html:embed:cite]
Chapter04 モダンPHPの文法と基礎文法
-
要所要所のみ
- コンテナ操作まわり
- 他の言語と異なるところ
-
docker-compose up -d
で立ち上げdocker-compose down
で解体
Section01 基本的な構文
PHPを実行する
- phpコンテナでphpコマンドを実行
docker-compose exec php php hello.php
Hello World.
- 対話
docker-compose exec php php -a
Interactive shell
php > echo 'Hello World.';
Hello World.
php >
- Ctrl-Cで離脱(SIGINT)
PHPとHTML
- localhost/phphtml.php
- HTMLとPHP混ぜられるよ、という話
変数の宣言
$
をつける- 動的型付け
Section02 型と演算
- 動的型付け(再掲)
文字列の操作
-
.
で結合する+
じゃない
比較の演算
-
a <=> b
(宇宙船演算子, PHP7.0~)a < b
なら-1
a === b
なら0
a > b
なら+1
-
乱暴だけど
(a - b)
の符号だけ取った感じ- 引き算できる必要はないことに注意(順序尺度)
- usortなどで使う
Section04 繰り返し処理
- 無限ループには気を付けましょう
Section05 関数
- サブルーチン
Section06 PHP7の新機能
型宣言
-
より安全なプログラミング
- エディタやIDEの恩恵
- 静的解析
関数の引数型宣言
-
引数型宣言はPHP5から一部ある(type hinting)
- クラス名
- self
- array
- callable
-
PHP7.0
-
スカラ型宣言対応
- bool
- float
- int
- string
-
-
PHP7.1
- iterable
戻り値の型宣言
-
PHP7.0完全新規
- 後置修飾
-
PHP7.1
-
nullable
function hoge(): ?string
とか書ける
-
厳密な型チェック(strictモード)
- 真っ先に
declare(strict_types=1)
<?php
declare(strict_types=1);
- UTF-8ではBOMがついていると下記エラーが出るので注意
PHP Fatal error: strict_types declaration must be the very first statement in the script
- デフォルト無効
-
有効にすると、関数の引数・戻り値の型不一致でTypeErrorが発生してくれる
- 仮引数と実引数の不一致 … 呼び出し側でエラー
- 戻り値型宣言と実際の戻り値の不一致 … 実行時エラー
パラメータの型の拡大変換・抽象メソッドのオーバーライド
-
参考:
-
- 事前条件は、継承元と同等かより弱いもの(or-ed)に置き換えられる。
- 事後条件は、継承元と同等かより強いもの(and-ed)に置き換えられる。
- リスコフの置換原則
-
-
引数:事前条件
- override時はより弱い縛りにできる
- 引数を広げるのはOK
-
戻り値:事後条件
- override時はより強い縛りにできる
- 戻り値を狭めるのはOK