【PHP日記】

自分の知識不足を悟った末、なるべく1日一回、Webに関する知識を書いていくだけのブログ。

PHP雑学② 【8日目】

PHPを学び始めた素人目線での、大事だったり大事じゃなかったりする雑な知識まとめその②です。


declareの設定項目

declarePHPでコード全体または一部に対して特定の設定を行うためのディレクティブ(命令構文)です。declareを使用することでスクリプトインタプリタにおけるソースコード)の動作や挙動を変更することができます。

declare (directive);    // 基本的な構文

一般的な使用例としては、declareを利用してエラーハンドリング(想定しない状況に遭遇した際に実行される処置)に関する設定を変更するなどがあります。

directiveにはさまざまなオプションがあり、以下はその中でもよく使われる設定項目です。

declare(strict_types=1);    // 関数などの引数、戻り値において厳密な型比較がされる
declare(ticks=1);    // register_tick_function 関数を有効または無効にする
declare(encoding='UTF-8');    // スクリプトの文字エンコーディングを指定する

基本的にPHPは、型比較の設定とは違うデータ型が渡ってきても何とか処理しようとしますが、declare(strict_types=1);を指定することで厳密な型比較を行い、指定したデータ型が渡ってこないとエラーを返します。

declare(strict_types=1);

function myFunction(int $num) {
    echo $num;
};

myFunction(4);    // 4
myFunction("4");    // エラーを返す

またdeclare(ticks=1);は、このディレクティブが有効な間のみregister_tick_function関数*1を実行した時に指定したコールバック関数が呼び出されます。

これらdeclareの設定は、必ずスクリプトの冒頭で指定します。ただし、いくつかのディレクティブは、PHPの設定ファイル「php.ini」や「.user.ini」ファイルなどでのみ有効です。



.PHP_EOL

.PHP_EOLPHPの定義済み定数(初めから定義されている定数)です。

PHPで改行を行う際、通常は改行コード\nを使って行いますがOSによって書き方が異なる場合があります。例えば、Windowsにおいての改行コードは\f\n(CRLF)*2ですが、macでは\n(LF)になります。

これに対し.PHP_EOLを使うことで、OSごとに対応する改行コードを自動で挿入してくれます。

echo "1行目" . PHP_EOL . "2行目" . PHP_EOL . "3行目";

使い方は簡単で、普通の定数として扱えばいいので、改行させたいタイミングで文字列結合させるだけです。

注意しておきたいのが、ブラウザで表示させる場合はHTMLで認識されるため、改行コードではなくHTMLタグの<br>が必要になってくることです。



アクセス修飾子

アクセス修飾子は、クラスのメンバーがどこまでアクセス可能にするかというアクセス可能範囲を設定できるキーワードです。

クラス内の変数(メンバ変数)などを定義する際に、どの範囲でアクセス可能かを制御します。例えば、それぞれのアクセス可能範囲は次のとおりです。

public  $name    // どこからでもアクセス可能
private  $pref    // 同じクラス内からのみアクセス可能
protected  $address    // 同じクラス内、または継承されたサブクラス内からアクセス可能

因みに、アクセス修飾子をつけ忘れると自動でpublicになってしまうため、意図しない動作をさせないためにも必ずつけるようにしましょう。

このようにアクセス修飾子をつけていくことで、何ができて何ができないかを明確に表現することをカプセル化と言います。



参考文献

https://it-kyujin.jp/article/detail/1528/#:~:text=%E3%81%93%E3%82%8C%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%80%81PHP_EOL,%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E5%AE%9A%E6%95%B0%20%E3%81%A7%E3%81%99%E3%80%82

https://www.javadrive.jp/php/member/index3.html


*1:PHPで使用されるタイマーイベントを登録するための関数

*2:「CR」(キャリッジリターン)=カーソルを行の先頭に移動させる。「LF(ラインフィード)」=次の下の行に移動させる。