Avatar billede funkyloonie Nybegynder
28. december 2002 - 22:29 Der er 2 kommentarer og
1 løsning

Metodekald på objekter

Hej Eksperter. Jeg har et problem med nogle klasser som jeg er ved at lave.

Problemet er at kaldet $t2 = $obj->getConnection()->getHost(); ikke virker (ved ikke om det kan lade sig gøre eller om man skal gøre det på en/den anden måde) da $t1 = $obj->connection->getHost(); virker fint. Min mening er at det er pænere programmering at hente værdier via metoder.

Er der evt. noget jeg gør forkert ved metodekald som skal returnere objekter af mine egne klasser?


Og så min kode..

Min klasse Db_connection:
class Db_connection {
    var $host;
   
    function Db_connection($hst="localhost") {$this->host = $hst;}

        function getHost() {return $this->host;}
     
    function setHost($hst) {$this->host = $hst;}
}

Min klasse Db_storage:
class Db_storage {
    var $connection;
   
    function Db_storage() {
        $this->connection = new Db_connection("minDB");       
       
    }
   
    function getConnection() {return $this->connection;}

    function setConnection($con) {$this->connection = $con;}
           
}

Min index fil ser sådan ud:
<?
include("Db_storage.php");
include("Db_connection.php");

$obj = new Db_storage;

$t1 = $obj->connection->getHost();
$t2 = $obj->getConnection()->getHost();

echo" $t1 $t2";
?>
Avatar billede funkyloonie Nybegynder
28. december 2002 - 22:33 #1
$t2 = $obj->getConnection();
$t3 = $t->getHost();

virker fint, men er det ikke en måde at lave "uendelige" kald ved -> vha. metodekald?
Avatar billede erikjacobsen Ekspert
28. december 2002 - 23:28 #2
Der har været nogle syntaktiske begrænsninger omkring obhekter i PHP.
De kan da lige prøve
$t1 = ($obj->connection())->getHost();
men jeg garanterer ikke noget. Ellers har du jo to andre metoder til
at gøre det med.
Avatar billede funkyloonie Nybegynder
03. januar 2003 - 17:09 #3
det virkede desvære ikke men tak for tippet. jeg lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester