Re: [PHP] COM - Assigning to method.

[email protected] (Andrew Ballard)
Newsgroups php.general
Message-ID <CAC1b6Ruqj8wkQU3CRqTQaiX7K1MmEC4KUWv4_+thm3AwT4VwYg@mail.gmail.com>
On Mon, Jul 15, 2013 at 4:21 AM, Adam Nicholls <[email protected]> wrote:
> Hi Andrew
>
> Thanks for this.
>
> But I'm still getting errors. I think I need to explain a bit more.
>
> Unfortunately there isn't a PHP API for this application I'm trying to
> interact with, my goal really is to be able to expose the COM
> functionality over a web-service such as SOAP so I can use it in a
> CMS. The application I'm trying to integrate with is Blackbuad's
> Raiser's Edge - API documentation here:
> https://www.blackbaud.com/files/support/guides/re7ent/api.pdf
>
> I think part of the problem is that the field names are also
> represented by an integer. So to get data out I would do:
>
> $oBank->Fields(22);   // which maps to BANK_fld_BRANCH_NAME.
>
> When I do:
>
> $oBank->22 = 'blah blah';
>
> I get an error because a property can't be numeric, it has to start as
> alpha character. If I use:
>
> $oBank->BANK_fld_BRANCH_NAME = 'blah blah blah';
>
> I get the following error:
>
> Fatal error: Uncaught exception 'com_exception' with message 'Unable
> to lookup `BANK_fld_BRANCH_NAME': Unknown name.
>
> I've also tried using your Value property returned by Fields():
>
> $oBank->Fields(22)->Value = 'Blah Blah blah blah';
>
> Which I then get:
> PHP Warning:  Creating default object from empty value in [C:\Users....]
> Fatal error: Call to undefined method variant::Save()
>
> Soo seems nearly impossible to implement a safe way to write to the COM API.
>
>
> At the moment, I'm still in the scoping/prototype stage of my project,
> so I'm beginning to think that using this COM API for this project is
> a no-go, which is unfortunate. I'm also guessing even if we did
> implement this API, exposing it as a Web Service is going to be tricky
> for performance sake (given that I've read that COM doesn't
> multithread very well??)
>
> Many Thanks
> Adam.

It's definitely possible to do, once you figure out the syntax you
need for this object.

I'm guessing you must have gotten past the $oBank->Init() method call
without issues.

What happens if you just use this for the value assignment?

$oBank->Fields(BANK_fld_ACCOUNT_NAME) = "Test account";
$oBank->Fields(BANK_fld_ACCOUNT_NO) = "12345";
$oBank->Fields(BANK_fld_BANK) = "Bank of the Nation";
$oBank->Fields(BANK_fld_BRANCH_NAME) = "State Street Branch";

It also looks like you're getting errors from the call to
$oBank->Save() saying that the method is not defined.

Andrew
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.