创建新实例失败PHP

时间:2012-11-12 22:56:41

标签: php oop serialization constructor amfphp

我对PHP相对较新并取得了不错的成功,但我遇到了这个问题:

如果我尝试创建GenericEntryVO类的新实例,我会收到500错误,几乎没有任何有用的错误信息。但是,如果我使用通用对象作为结果,我没有错误。我希望能够将此对象转换为GenericEntryVO,因为我正在使用AMFPHP与Flex客户端进行序列化数据通信。

我已经阅读了几种不同的方法来在PHP中创建构造函数,但是对于PHP 5.4.4,建议使用类Foo的典型“公共函数Foo()”

//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;
}

?>

1 个答案:

答案 0 :(得分:0)

再次感谢领导@eis。我没有意识到你可以在PHP中访问错误日志。作为as3 / Flex开发人员,我习惯使用带断点的调试器。不确定PHP开发人员是否有像Flash Builder这样的类似IDE。

在看到通用500错误是找到正确的类来实例化的问题后,我自己做了一些调查。我需要放置require_once realpath(dirname( FILE )。&#39; /vo/GenericEntryVO.php');在班上。我使用as3语法并期望文件路径相对于正在处理的当前文件。这是我找到这个解决方案的地方:

How do I format a PHP include() absolute (rather than relative) path?关于名为@Zoredache的人发表第4或第5条评论

我不确定这是否是最好的解决方案,但它让我重新运行,我的数据对象被序列化以供Flex使用。