04. februar 2003 - 14:24Der er
5 kommentarer og 1 løsning
Class og levetid
Se jeg programmerer normalt C++ og har så ved siden af det hele en opgave i PHP.
Jeg har oprettet en klasse, som indeholder en del forskellige variabler. F.eks. åbner jeg en database connection med: obj.OpenConnection();
og bagefter vil jeg så f.eks. noget i stil med: obj.IncrementCouner();
Mit problem er bare at det $Link jeg får tilbage af mysql_query og en $Con fra mysql_open() ikke lader til at virke? jeg smider dem i variabler af klassen og vil så naturligvis senere lave en: obj.Close(); men intepreteren fortæller mig så at $Link ikke er et gyldigt link??? Skulle de variabler ikke gerne være de samme, som da de blev tildelt en værdi? Nu tænker jeg på at variablerne findes i klassens scope naturligvis.
"jeg smider dem i variabler af klassen" det kan du ikke. de skal smides i undervariabler indeni klassen
idet du siger $obj = mysql_connect($x,$y,$z); omdefinerer du variablen $obj så det ikke mere er en klasse. nu er det et link til din connection og ikke andet (eller måske en boolean med værdien 'false').
class min_db { var $conn; // en lokal variabel i klassen minDb
function min_db(){};
function min_connect( $x,$y,$z ) { $this->conn = mysql_connect($x,$y,$z); } }
først skal du lave et eksemplar af den klasse: $instans = new min_Db(); du kan så initiere den locale conn for den instans af klassen indefra: $instans->min_connect( $domain,$user,$pass ); eller udefra: $instans->conn = mysql_connect($x,$y,$z);
Den er jeg hélt med på :) Problemer er at variablen aldrig bliver >0 ??
Synes godt om
Slettet bruger
05. februar 2003 - 18:28#4
Seriøst så sidder vi og gætter i blinde!? Med mindre du kommer med nogle konkrete oplysninger om, hvor det går galt er det ret svært for os at give et svar! Hvad angår OO i PHP er det er simpelt samlignet med C++ og Java f.eks. er en variabel tilskrevet en værdi er den tilgængelig både uden for og inden for objectet. Du kann sågar erklære variabler til en klasse uden for klassen! (Dog skal du have slået warnings fra for at lave disse "tryllerier"!)
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.