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 :)