Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasy
Forum PHP.pl > Forum > PHP
Thaal
witam !!
Właśnie próbuję nauczyc się programowania obiektowego (oklaski) i w zwiazku z tym probuje sobie stworzyć mały systemik. I wszytsko jest dobrze i pieknie, ale mam jedno małe pytanie. Otóż mam klasę do obsługi bazy danych (za chwilę mi ktoś napisze że takie już są i po co wywarzac otwarte drzwi, tak więc uprzedzam: uczę się i sądzę że to jest całkiem dobry pomysł) , oraz inną klasę wykorzystującą mój "sterownik". I teraz główna część pytania: jaka jest różnica pomiędzy poniższymi przykładami i który kod powinien być stosowany (ewentualnie który do czego).
A oto kod:
(I)
[php:1:1ff53ffc2c]<?php
class db
{
var $res = '';

function db($var1, $var2, $var3, $var4)
{
//cośtam
}

function query($var)
{
$this -> res = mysql_query($var);
}

}

class dwa
{
var $wskaznik = '';

function dwa($var) //jako argument podaję obiekt klasy db
{
$this -> wskaznik = $var;
}

function cos()
{
$this -> wskaznik -> query("zapytanie");
}
}

?>[/php:1:1ff53ffc2c]

(II)
[php:1:1ff53ffc2c]<?php
class db
{
var $res = '';

function db($var1, $var2, $var3, $var4)
{
//cośtam
}

function query($var)
{
$this -> res = mysql_query($var);
}

}

class dwa
{
var $wskaznik = '';

function dwa(&$var) //a tutaj referencja
{
$this -> wskaznik = &$var;
}

function cos()
{
$this -> wskaznik -> query("zapytanie");
}
}
?>[/php:1:1ff53ffc2c]
e-Gandalf
ojej, tyle czytania, a takie proste pytanie smile.gif Nie lepiej je bylo zadac?
W PHP5 (a o 4 juz mozemy powoli zapominac) obiekty zawsze sa przekazywane przez referencje. Zatem nie ma potrzeby zaznaczania, ze chcesz tylko przypisac referencje.

Dopiero jesli chcialbys skopiowac obiekt musisz uzyc metody clone().
Thaal
oki... no to jaka jest różnica między referencją a kopiowaniem obiektu?? i czego lepiej używać??
..:: pingu ::..
rożnica jest taka :
referencja:
[php:1:6f1bdb9422]<?php
$cos = '1';
$cos_1 = &$cos;
$cos_2 = &$cos;

echo $cos; // 1
echo $cos_1; // 1
echo $cos_2; // 1
$cos_2++;
echo $cos_1; // 2
echo $cos_2; // 2
?>[/php:1:6f1bdb9422]
Kopiowanie:
[php:1:6f1bdb9422]<?php
$cos = '1';
$cos_1 = $cos;
$cos_2 = $cos;

echo $cos; // 1
echo $cos_1; // 1
echo $cos_2; // 1
$cos_2++;
echo $cos_1; // 1
echo $cos_2; // 2
?>[/php:1:6f1bdb9422]

to samo działa na obiektach... Odniosisz sie do jednego obiektu a nie do kilku....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.