Przeskocz nawigację

Na początek kilka zdań o tym co to takiego w ogóle jest.

ORM (ang. Object-Relational Mapping) to z angielskiego mapowanie obiektowo-relacyjne. Główną ideą tego wzorca jest projektowanie aplikacji w taki sposób, aby operacje z bazą danych (np.) można było przedstawić w postaci obiektów. Postaram się wytłumaczyć to trochę łopatologicznie.

Załóżmy, że mamy dwie tabele w bazie danych – posts i users. Pierwsza przechowuje nasze wpisy w jakimś systemie, a druga –   użytkowników tego systemu. Ich struktura jest następująca:

`posts`
id INT(11) NOT NULL AI PRIMARY,
user_id INT(11) NOT NULL,
title VARCHAR(255),
content TEXT,
date INT(11),

oraz

`users`
id INT(11) NOT NULL AI PRIMARY,
username VARCHAR(16),
password VARCHAR(128),
email VARCHAR(128)

Dzięki zastosowaniu ORM do korzystania z tak utworzonych tabel możemy po krótkiej konfiguracji eksploatować następujący kod:

<?php
$post = $post->find(2);
$post->title = 'Poprawiony tytuł!';
$post->content = nl2br($post->content);
$post->save();
echo $post->user->username;
?>

Powyższy przykład przedstawia oba słowa klucze w nazwie ORM – obiekt i relacja. Obiekt, bo możemy korzystać z pól rekordu jakbyśmy korzystali z klasy, a relacja, bo możemy korzystać z tabel z którymi dana tabela się łączy w bardzo prosty sposób.

To tyle tytułem wstępu. Warto dodać, że stosowanie ORM znacznie upraszcza poziom zapytań do bazy na rzecz ich ilości. Z mojego doświadczenie mogę napisać, że dzięki temu zabiegowi zyskujemy trochę na wydajności.
W drugiej części znajdzie się już gotowy poradnik – jak przenieść to na Kohana Framework.

 

Często w Internecie spotykam ludzi, którzy mają pewien problem z PHP. Przeważnie brzmi on następująco:

Warning: Cannot modify header information – headers already sent by (output started at ścieżka do pliku:linia kodu) in ścieżka do pliku on line linia kodu

Gdyby go przetłumaczyć z języka angielskiego na polski to uzyskalibyśmy coś takiego:

Uwaga: Nie można zmodyfikować informacji nagłówkowych – nagłówki zostały już wysłane przez ([...]) w [...]

Można z tego wywnioskować, że skrypt wyrzuca błąd, ponieważ każesz mu zmodyfikować coś, czym już nie może dysponować – tzw. nagłówkami. Możecie spytać – a co to właściwie są te nagłówki? Według Cioci Wikipedii są to „wszelkie komendy używane do komunikacji między przeglądarką a serwerem WWW”. Mówiąc prościej – w nagłówkach zawarte są wszelkie informacje przesyłane przez serwer do przeglądarki, takie jak na przykład: język strony, typ MIME, informacje o ciasteczkach, etc.

Wracając do naszego problemu: aby mu zaradzić, należy w pewien sposób oszukać serwer i poczekać z wysłaniem nagłówków do czasu, kiedy skrypt zostanie do końca przetworzony.
Dokonamy tego, poprzez dodanie na samym początku skryptu takiej linijki kodu:


<?php
ob_start(); // void ob_start([string callback_function])
?>

Otworzy ona bufor i będzie w nim zapisywać dane dopóki nie odnajdzie jednej z komend służącej do zamknięcia go. Taką funkcją jest na przykład:


<?php
ob_end_flush(); // void ob_end_flush()
?>

Dzięki tej „sztuczce” możemy spokojnie bawić się w kodzie takimi funkcjami jak „setcookie”, „header”, czy „session_start”.

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.