错误“使用PHP函数调用非对象上的成员函数”

时间:2013-07-02 18:48:09

标签: php api function

我是php新手,所以请耐心等待。这是我的代码:

<?php

require('AuthnetCIM.class.php');

    $cim = new AuthnetCIM('26JspTq3A', '6S97jCdwS56P3rGs',AuthnetCIM::USE_DEVELOPMENT_SERVER);

function add_profile()
{

    // Create unique fake variables
    $email_address = 'user' . time() . '@domain.com';
    $description   = 'Monthly Membership No. ' . md5(uniqid(rand(), true));
    $customer_id   = substr(md5(uniqid(rand(), true)), 16, 16);

    // Create the profile
    $cim->setParameter('email', $email_address);
    $cim->setParameter('description', $description);
    $cim->setParameter('merchantCustomerId', $customer_id);
    $cim->createCustomerProfile();

    // Get the profile ID returned from the request
    if ($cim->isSuccessful())
    {
        $profile_id = $cim->getProfileID();
    }
    // Print the results of the request
    echo '<strong>createCustomerProfileRequest Response Summary:</strong> ' .$cim->getResponseSummary() . '';
    echo '<strong>Profile ID:</strong> ' . $profile_id . '';
}

add_profile()
?>

我的问题从这一行开始:$ cim-&gt; setParameter('email',$ email_address);

我收到错误:致命错误:在非对象上调用成员函数setParameter()

我知道这个代码在不在函数中时有效,这只是下一步。我确信我有一些简单的事情。任何帮助是极大的赞赏。谢谢。

2 个答案:

答案 0 :(得分:2)

PHP有范围。您需要使用global不推荐)导入该函数或将其作为参数传递。 $cim变量在函数中不会自动显示。

function add_profile($cim) {
    // ...
}
add_profile($cim);

或(不推荐

function add_profile() {
    global $cim;
    // ...
}

答案 1 :(得分:0)

add_profile函数中,您需要:

  1. $cim对象作为参数传递;或者,
  2. 通过在顶部的函数中使用$cim,使global $cim;成为函数的全局函数。
  3. 否则,现在,它超出了范围。