2016-10-04 8 views
0

私はフロントエンドのテストインタビューを受けていて、会社は自分のPHPレベルを知りたいと思っていました。 私はPHPでうまくいきませんので、ここで質問します。ある質問では、ClassOneという名前のクラスと、保護されたメソッドshow()がありました。このクラスはClassTwoで拡張されました。 ClassTwoがインスタンス化され、showメソッドが呼び出されました。 スクリプトの先頭に私はerror_reporting(0)を呼び出しました。PHPで致命的なエラーが表示されるerror_reporting(0)

error_reporting(0); 
 
class ClassOne { 
 
protected function show(){} 
 
} 
 
class ClassTwo extends ClassOne{ 
 

 
} 
 
$obj2 = new ClassTwo(); 
 
$obj2->show();

私はコードが表示されます何と言っていたと私は言っていない「ショーが保護されているとのerror_reporting(0)いずれかのエラーが表示することはできませんので、何も。」これは正しいですか?

これは致命的なエラーが発生し、error_reporting(0)を指定しても表示されるはずです。 テストは紙に書かれていたので、私は正しい答えを知らない。

+2

質問する前にシステムでテストしてみませんか? -1:-https://eval.in/655112と2: - https://eval.in/655114と3: - https://eval.in/655117 –

+1

'構文解析エラー構文エラー、予期しない '$ obj2'(T_VARIABLE) 'がありません。 – AbraCadaver

+0

@AbraCadaver Ghehe nice find! xd – icecub

答えて

1

クラスと保護されたメソッドとデザインについては忘れてしまいます。それはすべて誤った方向です。

<?php 
error_reporting(0); 
$obj = new Anything(); 
$obj->do(); 

構文エラーがありますか?いいえ、PHPはスクリプトを解析し、スクリプトの実行を開始します。 2行目では、すべてのエラー報告はオフになっています。 3行目で、PHPはAnythingクラスのインスタンスを作成しようとします。クラスが見つからないため、致命的なエラーが発生します。エラー報告は無効になりました。エラーは報告されません。何も映っていない。

<?php 
error_reporting(0); 
$obj = new Anything(); 
foo 
$obj->do(); 

構文エラーがありますか?はい、行4にあります。PHPはスクリプトを解析できないため、「構文解析エラー:構文エラー...」が発生します。エラー報告は有効になっていますか? 2行目は無関係で、スクリプトは決して実行されませんでした。 PHPはうまく読み込まれているため(php.iniの設定など)、ロードされた設定が参照されます。エラー報告が有効な場合、Parse error: syntax errorが報告されます。エラーが表示されていますか? CLI SAPIでは、display_errors,log_errorなどの環境およびその他の設定によって異なります。 display_errors=1のようなまっすぐなApache環境を想定してみましょう。エラーが表示されます。

エラー報告の設定は、エラーの報告に関するものです。これが表示されるわけではありません。エラーは記録され、表示されないことがあります。セキュリティ上の理由から。それにもかかわらず、エラー報告が無効になっている場合は、表示するものがないため表示を有効にするかどうかは関係ありません。

0

E_ERRORエラーレベル(致命的なエラーに対応)は1に等しい。つまり、error_reporting(0);もこれらのエラーを抑制します。

ただし、error_reporting()の機能はdisabled at allです。これは、その人が別の方法で考えた理由です。

+0

ダウンボードが親切に説明を求められました – Mchl

関連する問題