0

私はPHPに比較的慣れておらず、ある程度の成功を収めていますが、この問題に直面しています:

クラス GenericEntryVO の新しいインスタンスを作成しようとすると、500 エラーが発生し、役立つエラー情報はほとんどまたはまったくありません。ただし、結果として汎用オブジェクトを使用すると、エラーは発生しません。AMFPHP を使用してシリアル化データを Flex クライアントと通信しているため、このオブジェクトを GenericEntryVO としてキャストできるようにしたいと考えています。

PHP でコンストラクターを作成するいくつかの異なる方法を読みましたが、クラス Foo の典型的な「パブリック関数 Foo()」が PHP 5.4.4 に推奨されました。

//in my EntryService.php class
public function getEntryByID($id)
{
    $link = mysqli_connect("localhost", "root", "root", "BabyTrackingAppDB");

    if (mysqli_connect_errno())
    {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT * FROM Entries WHERE id = '$id' LIMIT 1";

    if ($result = mysqli_query($link, $query))
    {
        // $entry = new GenericEntryVO(); this is where the problem lies!

        while ($row = mysqli_fetch_row($result))
        {
            $entry->id = $row[0];
            $entry->entryType = $row[1];
            $entry->title = $row[2];
            $entry->description = $row[3];
            $entry->value = $row[4];
            $entry->created = $row[5];
            $entry->updated = $row[6];
        }
    }

    mysqli_free_result($result);
    mysqli_close($link);

    return $entry;
}

//my GenericEntryVO.php class 
<?php

class GenericEntryVO
{
    public function __construct()
    {
    }

    public $id; 
    public $title;
    public $entryType;
    public $description;
    public $value;


    public $created;
    public $updated;

    // public $properties;
}

?>
4

1 に答える 1

0

リード@eisをありがとう。PHP でエラー ログにアクセスできるとは知りませんでした。as3/Flex の開発者として、ブレークポイント付きのデバッガーを使用することに慣れています。PHP 開発者が Flash Builder のような同様の IDE を持っているかどうかはわかりません。

一般的な 500 エラーが、インスタンス化する適切なクラスを見つける際の問題であることがわかった後、私は自分で調査を行いました。require_once を配置する必要がありました realpath(dirname( FILE ).'/vo/GenericEntryVO.php'); クラスのトップに。私は as3 構文を使用していて、ファイル パスが現在処理中のファイルに対して相対的であることを期待していました。これが私がこの解決策を見つけた場所です:

PHP の include() 絶対パス (相対パスではなく) をフォーマットするにはどうすればよいですか? @Zoredacheという名前の人による4回目か5回目のコメントダウンについてです

これが最善の解決策かどうかはわかりませんが、Flex で使用するためにデータ オブジェクトをシリアル化することで、再び稼働することができます。

于 2012-11-13T15:23:54.630 に答える