Korzystając z tej strony zgadzasz się z polityką prywatności i regulaminem.
Akceptuj
WebInside.plWebInside.plWebInside.pl
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
Szukaj
  • Kontakt
  • Forum
WebInside.pl © 2023.
Czytasz: Zachowanie dostępu do danych w obrębie klasy
Udostępnij
Zaloguj się
Powiadomienia
Aa
WebInside.plWebInside.pl
Aa
Szukaj
  • Strona główna
  • Aktualności
  • Technologie webowe
  • Publicystyka
  • E-marketing
  • Poradniki
  • AI
  • Technologie
  • Artykuły partnerskie
  • Więcej
    • Kontakt
    • Mapa strony
Masz już konto? Zaloguj się
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
WebInside.pl © 2023.
WebInside.pl > Technologie webowe > Zachowanie dostępu do danych w obrębie klasy
Technologie webowe

Zachowanie dostępu do danych w obrębie klasy

WebInside.pl
Ostatnia aktualizacja: 18.08.2009
WebInside.pl
Udostępnij
Udostępnij

Ostatnimi czasy w poszukiwaniu pracy odwiedzam co jakiś czas potencjalnych pracodawców. Rozmowa kwalifikacyjna przebiega pomyślnie do momentu spotkania z „specjalistą” lub menadżerem działu IT. Zdarza się, że jestem często proszony o wykonanie zadania testowego.

Podczas spotkania w pewnej częstochowskiej firmie spotkałem się z zarzutem błędnego zachowania dostępu do danych. Podczas tego artykułu postaram się udowodnić błędne myślenie nie których programistów. Sam znajduję się na początku kariery, ale ucząc się staram się zachowywać podstawowe założenia programistyczne.

Problem polega na użyciu klasy połączeniowej z bazą danych MYSQL. Klasa może wyglądać np. tak jak na listing 1, sama klasa nie jest problemem artykułu.

class Query {           private $host='' ;        private $uzytkownik='' ;        private $haslo='' ;        private $naz_bazy='';        private $link;public function __construct() {$this->connect();}public function connect() {      $this->link = mysql_connect($this->host, $this->uzytkownik, $this->haslo);      if(!is_resource($this->link))          throw new Exception(mysql_errno()." -Zle parametry polaczenia");      if(!mysql_select_db($this->naz_bazy,$this->link))          throw new Exception(mysql_errno()." -Zle wybrana baza");} function setrecord($sql) {//tu tresc funkcji}}

Listing 1. Przykład klasy dokonującej połączenie z Bazą Danych MySql.

Istotą tego artykułu jest przedstawienie problemu dostępu do danych. Podczas spotkania usłyszałem, że należy to robić poprzez dziedziczenie, a moje metody były błędne. Listing 2 przedstawia tą wizję.

Class JakaKlasa extends Query {public function insertAdvert() {	$sql=' ';	$this->setrekord($sql);}public function selectAdvert() {	$sql=' ';		$this->getrekord($sql);}}

Listing 2. Błędny przykład inicjalicji klasy Query

Jak widzimy dostęp do danych uzyskujemy poprzez dziedziczenie wszystkich metod klasy Query. Jest to sposób wygodny, ponieważ nie musimy za każdym razem tworzyć nowego obiektu, jednak nie jest on optymalnym rozwiązaniem. Jeśli dane metody miały by zadziałać potrzeba nam odziedziczyć również konstruktor klasy Query. Dlaczego taka metoda nie jest dobra?

Jest kilka powodów, poniżej spróbuje wyjaśnić moje racje:

    • brak założenia metody opóźnionej inicjalizacji, połączenie z bazą powinno się otwierać tylko wtedy kiedy jest potrzebny dostęp do danych z bazy

    • czasami potrzeba nam stworzyć klasę, w której poszczególne metody będą realizować zupełnie inne zadania, więc nie ma sensu tworzyć połączenia w momencie tworzenia konstruktora, tylko wtedy kiedy wywołamy konkretną metodę, zadaniem programisty jest dostarczenie danych projektantowi

Argumentem zwolenników tej metody jest to, że otwieramy tylko jedno połączenie z BD dla jednego modułu. Takie sformułowanie wynika z braku wiedzy danej osoby, ponieważ funkcja mysql_connect według definicji: „Jeśli, ponownie wywołamy mysql_connect() z tymi samymi argumentami, nie zostanie nawiązane nowe połączenie, lecz zamiast tego, zostanie zwrócony identyfikator obecnie otwartego połączenia. .”(). Wynika z tego że dopóki nie zamkniemy połączenia, lub skrypt nie zakończy swojego działania, gdy wywołujemy połączenia za pomocą inicjacji obiektu naszej klasy Query z listingu 1 w danym skrypcie połączenie zostanie otwarte tylko raz. Przykład listingu 3 wyjaśni idee tego rozwiązania.

Class JakaKlasa  {public function insertAdvert() {	$sql=' ';	$conn= new Query();	$conn->setrekord($sql);}public function selectAdvert() {	$sql=' ';	$conn= new Query();	$conn->getrekord($sql);}}

Listing 3 Poprawne użycie klasy połączeniowej

Teraz, gdy w naszym jakimś skrypcie stworzy obiekt naszej JakieśKlasy i wywołamy kolejno metody to połączenie wywoła się tylko raz wbrew mylnemu wnioskowaniu niektórych ludzi. Co o tym sądzicie?

Może Cię zainteresować

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

Serwer dla małej firmy – czym kierować się przy jego wyborze?

WebInside.pl 2009-08-18 2009-08-18
Udostępnij ten artykuł
Facebook Twitter Kopiuj link Wydrukuj
Udostępnij
Poprzedni artykuł WAI (Web Accessibility Initiative)
Następny artykuł Jak zadbać o bezpieczeństwo domeny?
Zostaw komentarz lub opinię

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Procesor AMD Ryzen 7
Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
Technologie
Jak przygotować sklep internetowy na automatyzację obsługi klienta?
Artykuły partnerskie
the nvidia logo is displayed on a table
Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
AI Aktualności
Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?
E-marketing
4 najczęstsze cyberzagrożenia w przemyśle
Technologie
Jak uratować zaschnięty tusz do drukarki? Skuteczne domowe sposoby i porady
Poradniki
Model 3D jako wspólne źródło danych dla projektu, produkcji i montażu
Artykuły partnerskie
Dlaczego wideo z telefonu sprzedaje na TikToku lepiej niż profesjonalne spoty?
Artykuły partnerskie
Dwa ekrany zawsze pod ręką – zalety korzystania z monitora przenośnego na co dzień
Technologie
Rola nowoczesnych technologii w procesie rehabilitacji
Artykuły partnerskie
banner
Chcesz umieścić swoją reklamę w portalu WebInside.pl?
Skontaktuj się z nami, a zaproponujemy interesujące formy reklamy.
Skontaktuj się

Inne polecane artykuły

Technologie webowe

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

5 min czytania
Technologie webowe

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

7 min czytania
MacBook Pro showing programming language
Technologie webowe

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

9 min czytania
AktualnościTechnologie webowe

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

9 min czytania
woman in black top using Surface laptop
Technologie webowe

Serwer dla małej firmy – czym kierować się przy jego wyborze?

5 min czytania
Technologie webowe

Jaki hosting wybrać pod Laravel? Kompleksowy przewodnik dla twórców aplikacji webowych

6 min czytania
programming language
Technologie webowe

Kaskadowość w CSS – wszystko, co musisz wiedzieć

7 min czytania
two women talking while looking at laptop computer
Technologie webowe

Darmowe kreatory stron WWW – stwórz swoją stronę w godzinę

14 min czytania
//

WebInside.pl – portal technologiczny. Aktualności ze świata technologii, webmastering, marketing internetowy, AI, poradniki.

 

Partnerzy

Wszystkie kategorie

  • AI
  • Aktualności
  • Artykuły partnerskie
  • E-marketing
  • e(Biznes)
  • Poradniki
  • Publicystyka
  • Technologie
  • Technologie webowe

Ostatnio dodane

  • Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
  • Jak przygotować sklep internetowy na automatyzację obsługi klienta?
  • Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
  • Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?

Kontakt

Chcesz się z nami skontaktować? Jesteś zainteresowany reklamą lub artykułem sponsorowanym?

Skorzystaj z formularza kontaktowego lub napisz do nas na kontakt@webinside.pl

WebInside.plWebInside.pl
WebInside.pl © 2023 | Mapa strony | Forum | Polityka prywatności
Witaj ponownie!

Zaloguj się do swojego konta

Zapomniałeś hasła?