PHP: bool と boolean の型ヒンティング
質問
私はPHPでタイプヒンティングをもっと使おうとしています。今日、私はデフォルトのパラメータでブール値を取る関数を書いていて、次のような形式の関数があることに気づきました。
function foo(boolean $bar = false) {
var_dump($bar);
}
は実際には致命的なエラーを投げます。
クラス型ヒントを持つパラメータのデフォルト値はNULLのみです。
似たような形式の関数が
function foo(bool $bar = false) {
var_dump($bar);
}
にはありません。しかし、両方の
var_dump((bool) $bar);
var_dump((boolean) $bar);
は全く同じ出力をします。
:boolean false
これはなぜでしょうか?Javaにおけるラッパークラスと同じようなものでしょうか?
どのように解決するのですか?
http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
<ブロッククオート
警告
上記のスカラー型のエイリアスはサポートされていない。代わりに、クラス名やインターフェイス名として扱われます。例えば、boolean をパラメータや戻り値の型として使用する場合、bool 型ではなく boolean クラスまたはインターフェースのインスタンスが必要となります。
<?php
function test(boolean $param) {}
test(true);
?>
上記の例では、出力されます。
致命的なエラーです。Uncaught TypeError: test()に渡された引数1はbooleanのインスタンスでなければなりません、与えられたbooleanは
というわけで、簡単に言うと
boolean
のエイリアスです。
bool
のエイリアスであり、タイプヒントではエイリアスは機能しません。
本当の名前を使ってください。
ブール
の間に類似性はありません。
Type Hinting
と
Type Casting
.
タイプ ヒンティング は、どの型を受け入れるべきかを関数に教えているようなものです。
型キャスト は、型間の "スイッチング"することです。
許可されているキャストは
(int), (integer) - cast to integer (bool), (boolean) - cast to boolean (float), (double), (real) - cast to float (string) - cast to string (array) - cast to array (object) - cast to object (unset) - cast to NULL (PHP 5)
phpで タイプキャスティング は、(bool) と (boolean) の両方が同じです。
関連
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] Pythonで文字列からbooleanに変換する?
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】DateTimeクラスのオブジェクトを文字列に変換できない
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。