Well, you already have code to PostgreSQLDataSource ... the other object
just encapsulates it ...

ok heres some more code:

class AbstractDataSourceManager
{
   var $dataSourceName;
   var $dataSource;
   var $error_handler;

...

    function open()
   {
      <make $dataSource object with connection params>

      if (is_Object($dataSource))
         return $dataSource->open();
      else
         return false;
   }

   function executeQuery( $queryString )
   {
      return $this->dataSource->executeQuery($queryString);
   }
}

--------------------
Test Code:

if ($HTTP_GET_VARS["testno"]==7)
{
 $manualNameTest = new
AbstractDataSourceManager("PostgreSQLDataSource","","","wwwuser","","rp2");
 $result = $manualNameTest->executeQuery("select * from requirements;");

 $db = new PostgreSQLDataSource('','','wwwuser','','template1');
 $db->open();
 echo $db->connection."<BR>";
 echo $db->executeQuery("select * from issues;");
}

----------------------
Test Output:

The connection in open() is :Resource id #1
The connection in executeQuery() is :''

Warning: Supplied argument is not a valid PostgreSQL link resource in
/var/wwwroot/php/PostgreSQLDataSource.php on line 67 <this is the
pg_pConnect line...>
The connection in open() is :Resource id #2
Resource id #2
The connection in executeQuery() is :'Resource id #2'
Object
----------------

So in other words, the one using the encapsulator doesnt work - it seems to
lose $this->connection in PostgreSQLDataSource when its contained in
AbstractDataSourceManager !

... theres something screwball here - i mean - an object should be able to
access its own properties in any scope at any time shouldnt it ?

This is totally screwing me here ...

AndrewH

----- Original Message -----
From: "Andrew Hill" <[EMAIL PROTECTED]>
To: "Andrew Halliday" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Friday, March 02, 2001 11:53 AM
Subject: Re: [PHP] Loss of connection handle object


> Perhaps if you showed us some code?
>
> Best regards,
> Andrew
>
>
> On 3/1/01 7:35 PM, "Andrew Halliday" <[EMAIL PROTECTED]> wrote:
>
> > open() is simply supposed to open the connection to the database and
store
> > it in $this->connection.
> > As you can see - it gets the connection info from either the objects
> > properties or from parameters passed to it.
> > Can you see what Ive done wrong...if anything?!?!
> >
> > AndrewH
> >
> > ----- Original Message -----
> > From: "Andrew Hill" <[EMAIL PROTECTED]>
> > To: "Andrew Halliday" <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
> > Sent: Friday, March 02, 2001 11:13 AM
> > Subject: Re: [PHP] Loss of connection handle object
> >
> >
> >> Andrew,
> >>
> >> What is the open() function?
> >>
> >> Best regards,
> >> Andrew
> >> ---------------------------------------
> >> Andrew Hill - OpenLink Software
> >> Director Technology Evangelism
> >> eBusiness Infrastructure Technology
> >> http://www.openlinksw.com
> >>
> >>
> >>
> >>
> >> On 3/1/01 7:27 PM, "Andrew Halliday" <[EMAIL PROTECTED]> wrote:
> >>
> >>> Okay - Im writing an object to wrap a database.
> >>> The key problem is this:
> >>>   - it declares a connection var as an object property
> >>>   - the open() function opens the connection to the database and
stores
> >>> the handle in $this->connection
> >>>   - the executeQuery() method complains about not having a valid
handle,
> >>> because by then, somehow, $this->connection==null!!!
> >>>
> >>> Any ideas?-i swear its just something stupid ive missed ...
> >>>
> >>> HELP!
> >>>
> >>> Thanx in advance,
> >>> AndrewH
> >>>
> >>> -------------------------------------------------------------
> >>> The code following this returns the following to the browser:
> >>> -------------------------------------------------------------
> >>> The connection in open() is :Resource id #1
> >>> The connection in executeQuery() is :''
> >>>
> >>> Warning: Supplied argument is not a valid PostgreSQL link resource in
> >>> /var/wwwroot/php/PostgreSQLDataSource.php on line 67
> >>>
> >>>
> >>> -------------------------------------------------------------
> >>>
> >>>
> >>> class PostgreSQLDataSource
> >>> {
> >>>  var $connection;
> >>>  var $lastResultSet;
> >>>  var $error_handler;
> >>>
> >>>  var $host, $port, $username, $password, $database;
> >>>
> >>>  function PostgreSQLDataSource($host, $port, $username, $password,
> >>> $database)
> >>>  {
> >>>     global $error_handler;
> >>>     $this->error_handler = $error_handler;
> >>>
> >>>     $this->host = $host;
> >>>     $this->port = $port;
> >>>     $this->username = $username;
> >>>     $this->password = $password;
> >>>     $this->database = $database;
> >>>
> >>>     //Legacy behaviour: $this->open($host, $port, $username,
$password,
> >>> $database);
> >>>  }
> >>>
> >>>  function open(/*variable arg list*/)
> >>>  {
> >>>     $connectionString = "";
> >>>
> >>>     if (func_num_args() == 5)
> >>>     {
> >>>        $this->host = func_get_arg(0);
> >>>        $this->port = func_get_arg(1);
> >>>        $this->username = func_get_arg(2);
> >>>        $this->password = func_get_arg(3);
> >>>        $this->database = func_get_arg(4);
> >>>     }
> >>>
> >>>     if ($this->host)
> >>>        $connectionString .= " host=".$this->host;
> >>>     if ($this->port)
> >>>        $connectionString .= " port=".$this->port;
> >>>     if ($this->username)
> >>>        $connectionString .= " user=".$this->username;
> >>>     if ($this->password)
> >>>        $connectionString .= " password=".$this->password;
> >>>     if ($this->database)
> >>>        $connectionString .= " dbname=".$this->database;
> >>>
> >>>     $this->connection = pg_Connect($connectionString);
> >>> echo "The connection in open() is :".$this->connection."<BR>";
> >>>     if ($this->connection == false)
> >>>        return false;
> >>>     else
> >>>        return true;
> >>>  }
> >>>
> >>>  function close()
> >>>  {
> >>>     return pg_Close($this->connection);
> >>>  }
> >>>
> >>>  function executeQuery($queryString)
> >>>  {
> >>> echo "The connection in executeQuery() is
:'".$this->connection."'<BR>";
> >>>     $this->lastResultSet = pg_exec($this->connection,$queryString);
> >>>     return new Iterator($this);
> >>>  }
> >>>
> >>>  /*PRIVATE FUNCTIONS:*/
> >>>  function getRow($row)
> >>>  {
> >>>     return pg_fetch_array($this->lastResultSet,$row);
> >>>  }
> >>>
> >>>  function getResultLength()
> >>>  {
> >>>     return count($this->lastResultSet);
> >>>  }
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>
> >
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to