プリミティブな値に対する PHP のタイプヒンティング?
質問
プリミティブな型を期待するためにメソッドをタイプヒントすることができるかどうかを知りたいのですが。
このようなものです。
public function someMethod(string $str)
//^^^^^^
または
private function anotherMethod(int $num)
//^^^
と同じように
private function otherMethod(Person $rambo)
//^^^^^^
phpで可能でしょうか?
どのように解決するのですか?
PHP7では、以下のように追加されました。
型宣言により、関数は呼び出し時にパラメータが特定の型であることを要求することができます。与えられた値が不正な型であった場合、エラーが発生します。PHP 5では、これは回復可能な致命的なエラーとなりますが、PHP 7ではTypeError例外がスローされます。
参考にしてください。 http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
この回答があったときは、PHP 5が最新で、次のように言っていました。
PHP 5 では、型ヒンティングが導入されました。関数は、パラメータを強制的に をオブジェクト (関数プロトタイプでクラス名を指定)、 インターフェース、配列 (PHP 5.1 以降)、 callable (PHP 5.4 以降) に強制することができるようになりました。 . しかし、NULLがデフォルトのパラメータ値として使用された場合、それ以降の呼び出しの引数として許可されます。
クラスやインターフェースがタイプヒントとして指定された場合、その子や実装もすべて許可されます。
型ヒントはintやstringのようなスカラー型では使用できません。 リソースやトレイトも使用できません。
参考にしてください。 http://php.net/manual/en/language.oop5.typehinting.php
関連
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] PHP 未定義関数への呼び出し
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] PHPのstartWith()関数とendsWith()関数
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法