クラスのスコープ内でインスタンスを再作成せずに、クラス内でインスタンスのメソッドを呼び出すことはできますか?

パトリック

私はPHPに比較的慣れていないので、try / catchブロックからのエラーをログに記録するスクリプトを作成しようとしています。そうしようとすると、スコープの問題が発生しました。

まず、クラスインスタンスをグローバル変数にしようとしましたが、うまくいきませんでした。

'AnotherClass'が呼び出されるたびに新しいインスタンスを作成できることを私は知っています。ただし、これにより、「errorhandler」の「$ errors」配列がクリアされます。

私はこの問題に数時間立ち往生しており、どんな助けでも大歓迎です!

<?php

class errorhandler
{
    private $errors = [];
    function log($e = '')
    {
        print "Opps! An error occured: " . $e;
        array_push($this->errors, $e);
    }
}

# global $errorhandler; # Doesn't work...
$errorhandler = new errorhandler();

class AnotherClass
{
    function __construct()
    {
        try {
            $not_possible = 1/0;
        } catch (Exception $e) {
            $errorhandler->log($e); # Doesn't work
        }
    }
}

new AnotherClass();

?>

ありがとう:)

ジョセフシルバー

グローバル$errorhandler変数をローカルスコープにインポートする必要があります。

class AnotherClass
{
    function __construct()
    {
        global $errorhandler;

        try {
            $not_possible = 1/0;
        } catch (Exception $e) {
            $errorhandler->log($e); # Doesn't work
        }
    }
}

PS 1/0も例外ではなく、ランタイムエラーです。try/catchブロックでそれらをキャッチすることはできません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ