PHPを学び始めた素人目線での、大事だったり大事じゃなかったりする雑な知識まとめその②です。
declareの設定項目
declare
はPHPでコード全体または一部に対して特定の設定を行うためのディレクティブ(命令構文)です。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_EOL
はPHPの定義済み定数(初めから定義されている定数)です。
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://www.javadrive.jp/php/member/index3.html