如何检查PHP中是否加载了类/对象?

时间:2013-03-18 19:21:52

标签: php

我有这段代码:

<?php  
    define('ga_email', 'xxxxxxxxx@xxxxx.com');    // GA Email
    define('ga_password', 'xxxxxxxxxxx');         // 2-part authorization password
    define('profile_id', 'xxxxxxxxx');            // Analytics profile ID
    $gapi_url = 'gapi/gapi.class.php';
    require_once $gapi_url;
    $ga = new gapi(ga_email,ga_password);

    // here goes next code

?>

没关系。 Gapi将加载。

但是,如果我将ga_password从xxxxxxxxxxx更改为yyyyyyyyyyy(因此登录GA的信息不正确)我得到一个令人讨厌的错误,没有加载gapi等。

我需要一些if条件来实现,所以它检查我的对象$ ga是否已创建,然后才执行代码。

e.g:

 <?php  
        define('ga_email', 'xxxxxxxxx@xxxxx.com');    // GA Email
        define('ga_password', 'yyyyyyyyyyyyyy');      // 2-part authorization password
        define('profile_id', 'xxxxxxxxx');            // Analytics profile ID
        $gapi_url = 'gapi/gapi.class.php';
        require_once $gapi_url;
        $ga = new gapi(ga_email,ga_password);

        if($ga  loaded) {
           // SUCCESS
           // here goes next code
        } else {
           // FAILURE
           echo "Your connection details are wrong.";
        }

 ?>

所以,相反看起来很糟糕的PHP错误,我会得到更好的“你的连接细节是错误的。”消息。

2 个答案:

答案 0 :(得分:2)

在查看类的源代码后,似乎构造函数在错误详细信息错误时不会抛出异常,但只有在使用凭据时才会抛出异常。将所有对try...catch块中对象的调用包含在内将为您提供一些错误处理功能:

try {
    $ga = new gapi(ga_email,ga_password);
    // here goes next code
} catch (Exception $ex) {
    // FAILURE
    echo "Your connection details are wrong.";
    // $ex->getMessage() has a detailed message
}

您还需要确保知道构造函数方法的正确签名,appears to be the following

public function __construct($auth_method)

答案 1 :(得分:0)

__construct()的gapi上检查用户名和密码是否有效。还要创建另一个公共函数或变量来返回它是否是有效的登录名。