/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
connect til oracle
Fra : Torben


Dato : 16-09-08 06:26

Hej

Hvordan laver jeg en class der sørger for at connecte til en oracle-
database:

Jeg har forsøgt mig med dette:

class makeConnect {
   public $conn;
   public $tnsName = "(DESCRIPTION = (
    ADDRESS_LIST = (
    ADDRESS = (
    PROTOCOL = TCP)(
    HOST = TestOracle)(
    PORT = ####)) ) (
    CONNECT_DATA = (
    SID = ########) ) )";
   function __construct() {
      $conn = oci_connect ( "########", "###########", $tnsName );
      if (! $conn) {
         echo "Ingen forbindelse: " . var_dump ( ocierror () );
         die ();
      }
   }
}

include ("myClass.php");
$myDB = new makeConnect ();

Jeg tror ikke jeg er så langt fra målet. Hvordan gør jeg det mest ZEND-
korrekt? NB: det er PHP5 jeg har til rådighed.



 
 
Michael Rasmussen (16-09-2008)
Kommentar
Fra : Michael Rasmussen


Dato : 16-09-08 16:20



Martin (17-09-2008)
Kommentar
Fra : Martin


Dato : 17-09-08 09:58

Torben wrote:
> Hej
>
> Hvordan laver jeg en class der sørger for at connecte til en oracle-
> database:
>
> Jeg har forsøgt mig med dette:
>
> class makeConnect {
>    public $conn;
>    public $tnsName = "(DESCRIPTION = (
>     ADDRESS_LIST = (
>     ADDRESS = (
>     PROTOCOL = TCP)(
>     HOST = TestOracle)(
>     PORT = ####)) ) (
>     CONNECT_DATA = (
>     SID = ########) ) )";
>    function __construct() {
>       $conn = oci_connect ( "########", "###########", $tnsName );

1:
For at få fat i $tnsName så skal du bruge
$this->tnsName så altså

$conn = oci_connect ( "########", "###########", $this->tnsName );

2:
Anyways, så er det ikke smart at bruge public variabler i konstruktøren
da du faktisk ikke kan ændre det.

$obj = new makeConnect;
// Allerede NU er $tnsName brugt - så hvis du vil gøre noget andet
$obj->tnsName = 'Noget andet';
Så er det fuldstændig ligegyldigt.

Så jeg ville gøre noget ala dette

function __construct($tnsName=null) {'
if( $tnsName !== null ) $this->tnsName = $tnsName;
$conn = oci_connect ( "########", "###########", $this->tnsName );
}

Så kan du ændre $tnsName ved opkaldet til klassen

$obj = new makeConnect;
// tnsName er den sædvanlige
$obj = new makeConnect('Test');
// tnsName er nu Test


>       if (! $conn) {
>          echo "Ingen forbindelse: " . var_dump ( ocierror () );
>          die ();
>       }
>    }
> }
>
> include ("myClass.php");
> $myDB = new makeConnect ();
>
> Jeg tror ikke jeg er så langt fra målet. Hvordan gør jeg det mest ZEND-
> korrekt? NB: det er PHP5 jeg har til rådighed.

Zend Korrekt...
1:
Der skal public på public metoder, og private på private metoder, samt
protected på de metoder der kun må bruges af andre klasser

2:
$conn skal ihvertfald ikke være public, da den nok ikke skal bruges
udenfor klassen

3:
Læs lige lidt på <http://framework.zend.com/manual/en/coding-standard.html>
Hvis du altså vil have det helt Zend korrekt :)

Torben (17-09-2008)
Kommentar
Fra : Torben


Dato : 17-09-08 05:39

Michael Rasmussen skrev:
> PS. har du ikke en fungerende tnsnames.ora?

Nej, desværre.

Hm... det virker bare ikke! Jeg er newbee med hensyn til oop. På
gammeldags fungerer det fint.

$tnsname = "(DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
(PROTOCOL = TCP)
(HOST = ############)
(PORT = 1521)))
(CONNECT_DATA =
(SID = ##########)))";
$usn = "[username]";
$psd = "[password]";
$conn = oci_connect($usn,$psd,$tnsname);

Jeg ville bare pokkers gerne skridtet videre til oop! Scriptet knækker
så snart jeg instansierer class

er det
>   $this->conn = oci_connect ( "########", "###########",$tnsName );

hvor det går galt?

Michael Rasmussen (17-09-2008)
Kommentar
Fra : Michael Rasmussen


Dato : 17-09-08 18:37



Michael Rasmussen (17-09-2008)
Kommentar
Fra : Michael Rasmussen


Dato : 17-09-08 23:01



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste