2

次のような方法でいくつかの変数にアクセスしたいと思います。

System->Config->URL

この場合、「System」は私のコアクラスであり、「Config」は配列であり、「URL」は配列内の項目です。これが私の「system.php」コードです:

<?php

abstract class System {

    public $Config;

    public function __construct() {

        $this->Config = (object) array('URL' => 'localhost');
    }
}

echo System->Config->URL;

?>

上記のコードを実行すると、次のように表示されます。

Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ';'

echoそれは私の線を指摘しています。

今、私が抽象的なアイデアを排除し、これを使用すると、それは非常にうまくいきます!

<?php

class System {

    public $Config;

    public function __construct() {

        $this->Config = (object) array('URL' => 'localhost');
    }
}

$System = new System();
echo $System->Config->URL;

?>

staticキーワードとキーワードを混同しようとしましたabstractが、うまくいきませんでした。私は関数をあきらめて、__construct「Ready」という名前の非常に通常のメソッドを作成しましたが、クラスが定義されているときにそれを呼び出すことができませんでしたabstract

ここで何が悪いのか誰か知っていますか?私は同様のコードが非常にうまく機能するのを見てきました。

どんな助けやアイデアも大歓迎です!

4

2 に答える 2

4

「抽象」クラスの定義を見てください。インスタンス化できないクラスです。インスタンス化できるのは、それを継承するクラスのみです。

于 2012-09-09T18:34:53.680 に答える
2

あなたが何をしようとしているのかわかりません。2番目の例は正しいので機能します。抽象クラスは拡張する必要のあるクラスであり、実際の例と同じように、その(子)クラスをインスタンス化できます。

「abstract」が何をするのかを読む必要があるかもしれません。

于 2012-09-09T18:35:34.087 に答える