18. april 2005 - 13:21Der er
9 kommentarer og 2 løsninger
Fejl ved sæt af class-variabler
Jeg har et problem med følgende:
//dto.php
class projectDto { var $id; var $name; var $description; var $supervisor; var $startDate; var $state;
function projectDto() { global $supervisor;
$supervisor = new userDto(); } }
// projectfunctions.php
function projectGetById($projectId) { global $dbFunctions, $userFunctions;
$projectDto = new projectDto();
$result = $dbFunctions->query("select Id, Name, Description, Supervisor, StartDate, State from tblProject where Id = $projectId"); if ($result) { $row = mysql_fetch_assoc($result);
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Normalt ville man nok bruge set-metoder i sin klasse, når man ligger informationer ind i sin klasse, fremfor at sætte det ind i variablen direkte.
Et forslag kunne også være at gøre det direkte. Altså: $projectDto = new projectDto($id, $name, $description, $supervisor, $startDate, $state)
Fejlen kan jeg dog ikke lige se. Sikker på at det bliver ordentlig gemt i din klasse? Når jeg selv koder vha. OOP, så skriver jeg f.eks. $this->variabel = value; Du vælger at skrive $this->$variabel = value; - mon det kan have en betydning? Vil skyde på det er ligemeget udenfor klassen.
Generelt er det et godt kodningsprincip at sætte variabler i en klasse via SET-metoder, fremfor direkte!
Bruger jeg normalt også ved andre sprog, men primært brug af indbyggede get/set-metoder på properties - understøtter php noget ligenende? Eller er jeg nød til at lave funktioner som setId, getId, setName, getName osv?
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.