2

書いたインターンがいます

$this->method(ct);

それ以外の

$this->method('ct');

これはエラーをスローしませんが、私はそれをしたいです。どのように?

私はPHPの推測が好きではありません。

4

3 に答える 3

2

Turn on PHP error reporting with error_reporting(E_ALL) so that all warnings and errors are reported. From there, you can make your own error handling method to catch these warnings/errors and do with them what you want instead of them just being piped out to the output. A good example of an error handling method is right here http://php.net/manual/en/errorfunc.examples.php

Cheers.

EDIT: In fact, a custom error handling method will handle all errors whether they are being reported or not, so the error_reporting line would be superfluous. Check out that link.

于 2013-07-12T17:09:54.193 に答える
1

PHP が未定義の定数を値として定数の名前を持つ文字列定数として扱うことは文書化された動作です。したがって、このコードは実際に機能します。

ただし、警告が発行されますが、その警告は無視される場合があります。呼び出しerror_reportingて、出力するエラーの種類を設定できます。error_reportingphp.ini で設定することもできます。

本番環境とは別の開発環境があるとします。もしそうなら、あなたの開発環境とテスト環境ではそれらのレポートを最高レベルに設定し、本番環境ではそれを少し低く設定します. 開発中はこれらのメッセージに直面したいと考えていますが、本番環境ではおそらくログに記録したいでしょうが、ユーザーには表示したくありません。

display_errorsディレクティブも見てください。

于 2013-07-12T17:07:40.630 に答える
0

メソッドで、引数が文字列かどうかをテストします

function method($arg){
   if (!is_string($arg)){
      throw new exception("argument must be a string. ".get_type($arg)." given");
   }
}
于 2013-07-12T17:04:24.320 に答える