Obiekt czy tablica jako kontener dla danych

0

Hej,

Zastanawiam się nad takim zagadnieniem: czy jest jakaś kolosalna różnica lub wyraźne uzasadnienie dla np. przechowywania danych wynikowych z zapytania SQL w tablicy lub obiekcie? Chodzi mi o taką sytuację:

// wynik zapytania jako tablica obiektów
$query->result()

// wynik zapytania jako klasyczna tablica
$query->result_array()

Spotkałem się z tym zagadnieniem przy próbie wrzucenia do sesji danych wynikowych z zapytania SQL. Przy wariancie tablicy obiektów, musiałbym to zrobić przy pomocy serializacji, natomiast przy klasycznej tablicy, po prostu ją tworzę, a później odwołuję się do konkretnego elementu. Wobec tego zacząłem zastanawiać się, czy jest jakieś wyraźne wskazanie dla użycia jednego lub drugiego wariantu.

0

Przy pobraniu wyników jako tablica, pobierasz tylko to, co jest Ci potrzebne. A jak pobierasz cały obiekt, to masz w gratisie masę dodatkowych niepotrzebnych informacji.

0

Wydaje mi się że lepiej zrobić prościej dopóki to pozwala Ci uzyskać efekt.

0
lightinside napisał(a):

Wydaje mi się że lepiej zrobić prościej dopóki to pozwala Ci uzyskać efekt.

OK, a czy w takim wypadku jest możliwe pobranie z jednego zapytania SQL danych oraz jednocześnie policzenie ich wystąpień, korzystając z kontenera z tablicą obiektów? Chodzi mi o coś takiego:

$data['results'] = array();
foreach($query->result() as $result) {
	$data[] = $result;
	}
$data['count_results'] = $query->num_rows();
return $data;

Jak się później odwołać do tych obiektów w widoku?

Czy może zrobić to na zwykłej tablicy?

0

Operacje na tablicach są generalnie szybsze, natomiast obiekty ułatwiają pracę nad projektem - np. w IDE, szczególnie jeżeli wynik zapytania masz z jakiegoś ORM który zwraca obiekt określonej klasy, a nie standardową stdClass.

Co do obliczenia ilości rekordów, to nie potrzebujesz funkcji num_rows, możesz skorzystać z funkcji count( $tablica ) albo zrobić wewnętrzny licznik w pętli w której iterujesz po tablicy wyników.

1 użytkowników online, w tym zalogowanych: 0, gości: 1