3

私は、オフラインで (クライアント コンピューター上で) 使用するために、PHP で顧客管理システムを作成しています。Java または C# の使用を検討しましたが、ブラウザーにすべてのレイアウトを任せて、会社に自分のコンピューターに wamp をインストールしてもらう方が簡単であるという結論に達しました。

このインターフェースを通じて、彼らはエージェントを管理することもできます (つまり、誰かが知らない場合に備えて、自分の地域を回って会社の注文を受けるセールスマン)。これは、私が抱えている問題を説明するために、この投稿で使用するセクションです。

基本的に、AgentPages、AgentList、AgentDetails、および AgentForm の 4 つのクラスがあります。AgentForm には、編集と新規の 2 つのモードがあります。AgentPages には getPages という関数があり、他の 3 つのクラスのインスタンスの配列を返します。ただし、「new」キーワードは好きではありません。

私のコードは次のとおりです(AgentPagesクラスのみ):

<?php
require_once("AgentList.php");
require_once("AgentDetails.php");
require_once("AgentForm.php");
class AgentPages {
    public function  __construct() {
        echo "Constructed";
    }
    private $pages = array("List" => new AgentList(), "Details" => new AgentDetails(), "Form" => new AgentForm());

    function getPages() {
        return $this->pages;
    }
}
?>

PHP を有効にした netbeans 6.9 IDE を使用しており、(おそらくご想像のとおり) wamp サーバーがインストールされています。PHP バージョン 5.3 では、netbeans デバッガーが「解析エラー: 20 行目の C:\wamp\www\CustomerApp_v2\Agents\AgentPages.php の解析エラー」と通知しています。5.2.11 では、その行の予期しない T_NEW について何かが表示されます。これについては、20 行目より前に大きなコメントを切り取りましたが、20 行目は $pages の宣言であることがわかります。現時点では、クラスごとに空のコンストラクターがあります。

20行目の代わりに次の行も試しました:

$AgentList = new AgentList();

これも機能しません-同じエラーが発生します。私が見たすべてのチュートリアルによると、私のコードには何も問題はありません.

誰かが私が間違っていることを知っていますか? 私はこれまでに多くの PHP オブジェクト指向の作業を行ってきましたが、最後に触れたのは 2 年前のことです。

前もって感謝します。

よろしく、

リチャード

4

1 に答える 1

5

問題は、式を使用して宣言でインスタンス変数を初期化しようとしていることです (への呼び出しnewは式です)。それはうまくいきません。代入をコンストラクターに入れると、機能します。

このような:

class AgentPages {
    public function  __construct() {
        $this->pages = array("List" => new AgentList(), "Details" => new AgentDetails(), "Form" => new AgentForm());
        echo "Constructed";
    }

    private $pages;

}
于 2010-08-02T03:32:01.653 に答える