Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Proceduralny czy obiektowy?
Forum PHP.pl > Forum > Przedszkole
Neymar11
Witam!
Nie wiem dlaczego, ale sie zastaniawiam.
Nigdy nie wiedzialem, ze istnieje cos takiego jak obiektowe
programowania w PHP (wstyd)...
Dzisiaj podpatrzylem na php.net za mysqli::__construct, bo kiedy
zaktualizowalem PHP do nowszej wersji wyskoczylo mi:
mysql_connect is deprecated use mysqli or pdo instead it czy cos takiego tongue.gif
Wiec popatrzalem za mysqli_connect
Powiedziano mi, ze to jest alias on ::__construct, wiec poszelem na ::__construct
No i co tam zobaczylem?

Object oriented style
  1. mysqli cos tam fajnego


Procedural style
  1. mysqli cos tam fajnego


No i sie zaciekawilem, ale bardzo przestraszylem, jak ja
ogarne ten obiektowy mysqli... Wiec stwierdzilem, ze nie bede
aktualizowal PHP tongue.gif

Joke...

Musze aktualizowac, bo hostingi juz nigdzie nie beda miec pewnie PHP5.x.x

PYTANIE:

Czy warto zostac przy proceduralnym PHP czy juz kuc obiektowy?
Bo to co zobaczylem na mysqli::__construct to az mi ciarki przeszly ;_;

Prosze o szczerosc, iz bardzo zzylem sie z prostym proceduralnym PHP i nie
mam zamiaru (przynajmniej teraz) przechodzic na obiektywny.

Jaka byla wasza reakcja, kiedy przechodziliscie na obiektowy?
Czy moze od razu zaczynaliscie od obiektywnego?

Z gory dziekuje za odpowiedzi...
Cheers ^^

PS.
Jezeli zly dzial, to bardzo przepraszam i prosze o przeniesienie, gdyz
nie wiedzialem, gdzie i jak ten temat umiescic / otagowac...
SwiezuPL
żadna filozofia nerdsmiley.png Wielkiej różnicy nie ma jeśli chodzi o mysqli a mysql
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$link = mysqli_connect("myhost","myuser","mypassw");

Obiektówka php, hmmm... Fakt, warto się nauczyć obiektowego PHP. Ale nie masz takiego wymogu, by korzystać z strukturalnego <czy proceduralnego>.
Co do "reakcji", trudno nie było gdyż w moim przypadku siedziałem w obiektówce w javie i c++.

Odsyłam;
http://www.php.pl/Wortal/Artykuly/PHP/Pods...-poczatkujacych
http://pl.wikibooks.org/wiki/PHP/Czym_jest...ie_obiektowe%3F
Neymar11
@SwiezuPL

Z tego co zauwazylem roznice sa takie:

mysql
  1. $conn=mysql_connect('host', 'user', 'pass');
  2. mysql_select_db($conn, 'name');
  3. $sqlq=mysql_query("SELECT * FROM table");


mysqli
  1. $conn=mysqli_connect('host', 'user', 'pass', 'name');
  2. $sqlq=mysqli_query($conn, "SELECT * FROM table");


dla mnie lepszy jest jednak mysql... trudno mi sie bedzie odzwyczaic...
obiektowka dla mnie jest bardziej skomplikowana niz proceduralny...
no ale to moje zdanie smile.gif

dzieki ci @SwiezuPL smile.gif
SwiezuPL
Oczywiście że jest bardziej skomplikowana, ale są tego +sy. Wszystko masz opisane w linkach które podałem. Aczkolwiek wybór należy do ciebie.
Co do mysqli;
w połączeniu mysqli również możesz zdefiniować domyślne db
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

W obiektówce wygląda to tak;
$link = new mysqli('localhost', 'my_user', 'my_password', 'my_db');


Odsyłam:
http://php.net/manual/pl/mysqli.construct.php

@edit
+ nie masz obowiązku przechodzić na mysqli. (przynajmniej teraz) Po prostu funkcje mysql w php będą oznaczone jako przestarzałe, ale możesz wyłączyć tą informację w ustawieniach php.
Jak pisze php:

Cytat
Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
mysqli_connect()
PDO::__construct()
Neymar11
Czyli jak bym chcial wykonac
  1. $link = mysqli_connect('host', 'user', 'pass', 'db');
  2. $sqlq = mysqli_fetch_assoc("SELECT * FROM table");

tylko obiektowe, musialbym zrobic to tak:
  1. $link = new mysqli('host', 'user', 'pass', 'db');
  2. $sqlq = $link->query("SELECT * FROM table")->fetch_assoc();


Tak? Bo ja juz nie wiem, szybko to wyczytalem na manualu, ale
nie jestem pewien juz sam... Czy ja dobrze kombinuje?
SwiezuPL
thumbsupsmileyanim.gif

ew. help dot arg w tej funkcji masz w examples tutaj;
http://php.net/manual/en/mysqli-result.fetch-array.php

Pamiętaj, że programowanie to nie sama teoria. Staraj się też główkować sprawdzając to wink.gif
Neymar11
Juuuhu! Od dzisiaj zaczynam nauke obiektowki...
Cos czuje, ze niedlugo tego mysql_* usuna...

A wiesz co @SwiezuPL ?
Teraz jak pisalem mysql_* to prawie bym napisal mysqli_* biggrin.gif
Juz sie przyzwyczajam powoli...
Dzieki ci wielkie za ta pomoc, teraz odrobina checi i za chwile
bede zapier*****al w obiektowym mysqli_* biggrin.gif

Cheers * < * neymar11

Hehe nawet sygnaturke zmienilem ;P
SwiezuPL
Cytat(Neymar11 @ 2.05.2015, 22:16:25 ) *
bede zapier*****al w obiektowym mysqli_* biggrin.gif


Naucz się całej obiektówki w PHP wink.gif
Pracowanie tylko na obiekcie mysqli w strukturalnym trochę się "miesza".
Neymar11
mi bajzel nie przeszkadza biggrin.gif
ja jak mi sie nie chcialo na bootstrapie robic kilkunastu stron do systemu
usersow to ja to zrobilem tak:

/dir
--/ext
----/css
----/js
----/fonts
----/img
--/src
--/tpl
----/up.php
----/down.php

w up.php mam switch($_GET['page']) ktory jest wywolywany na index.php i odczytuje
strone a case'y odwoluja sie do plikow w folderze /src
zas wszystkie potrzebne pliki bootstrapa sa w /ext

smile.gif

to sie nazywa bajzel... no ale troche porzadku jest biggrin.gif

a index.php wyglada tak:

  1. include 'up.php';
  2. if (!isset($_GET['page'])) {
  3. include 'src/index.php';
  4. break;
  5. }
  6. include 'down.php';


dziala wysmienicie biggrin.gif

PS. sorry za @offtop

@topic

co do uczenia sie calej obiektowki, zbytnio mi sie nie chce...
jeszcze gimbaza i jakas kariera dalej wiec wiesz... czasu nie ma tongue.gif
php w strukturalnej formie sie uczylem ok. 6mc-y

@offtopic
teraz jak pisze skrypty strukturalne caly dzien mi wywala 503 albo 500 -.-
a jak wejde na inny skrypt to wszystko dziala ohmy.gif

Cheers * < * neymar11
SwiezuPL
^ http://pl.wikipedia.org/wiki/Kod_odpowiedzi_HTTP
pmir13
Właśnie taki bajzel jest najlepszym powodem, żeby przejść na obiektówkę i zacząć się uczyć wzorców projektowych. Przy prostych skryptach możliwych do zrobienia i ogarnięcia przez jednego programistę różnica może nie jest tak bardzo widoczna, ale już przy pracy w jakimś zespole przy większym projekcie korzyści z obiektówki są ogromne.

Mając bałagan w strukturalnym kodzie można dojść do pewnej granicy, przy której czas potrzebny na dodanie nowych funkcjonalności czy wprowadzenie zmian zacznie rosnąć wykładniczo. Im ktoś jest lepszy tym dalej ma tą granicę, ale każdy kiedyś ją osiąga. Zaczynają pojawiać się proste błędy, znalezienie których jest coraz trudniejsze, spada motywacja, w końcu projekt nawet jeśli się uda go skończyć jest zbugowanym potworkiem, którego refaktoryzacją nikt inny potem nie chce się nawet zająć.

Inżynieria oprogramowania poszła mocno do przodu w ostatniej dekadzie, istnieją frameworki, które wprawdzie wymagają poświęcenia trochę czasu na naukę, ale po przekroczeniu progu oświecenia bardzo ułatwiają szybkie pisanie wysokiej jakości kodu. Testy jednostkowe upewniają, że można korzystać z gotowych części kodu nie martwiąc się o jego poprawność i nie trzeba od nowa wymyślać koła, a można się skupić na tym co nowe i unikalne dla projektu. Systemy kontroli wersji jak git pozwalają pracować równolegle wielu programistom, umożliwiają eksperymenty i pozwalają w każdej chwili wrócić do dowolnego wcześniej zapisanego stanu w pełni działającego kodu.

Jeśli chodzi o przestarzałe api mysql_, to sam fakt, że jego funkcje nie są napisane obiektowo nie jest tak istotny, jak to, że to api zatrzymało się w rozwoju na mysql w wersji 4.1. Praktycznie żadne nowości z wersji 5+ nie są obsługiwane, w szczególności nie ma prepared statements, które bardzo ułatwiają dbanie o bezpieczeństwo w przypadku gdy przetwarzamy takie zapytania na które użytkownik ma jakiś wpływ. Problemem jest także to, że w sieci jest mnóstwo przestarzałych poradników, napisanych ładnych parę lat temu, często z wysoką pozycją w google i ludzie niepotrzebnie od tego zaczynają naukę.

Jeśli ktoś chce się bawić programowaniem hobbystycznie, na własne potrzeby, dłubiąc sobie jakąś tam swoją stronkę, to może zostać przy proceduralnym php. Jeśli jednak ktoś myśli o pracy zarobkowej, to w tej chwili nie ma wielkiego wyboru, a za kilka lat nie będzie go miał wcale. Po prostu musi zająć się obiektówką, wzorcami projektowymi, poznać przynajmniej jeden popularny framework, założyć sobie repo na githubie, dorwać jakieś porządne ide do php i próbować się na tym wszystkim uczyć.
Martin-ZG
Cytat(pmir13 @ 3.05.2015, 00:25:28 ) *
Właśnie taki bajzel jest najlepszym powodem, żeby przejść na obiektówkę i zacząć się uczyć wzorców projektowych. Przy prostych skryptach możliwych do zrobienia i ogarnięcia przez jednego programistę różnica może nie jest tak bardzo widoczna, ale już przy pracy w jakimś zespole przy większym projekcie korzyści z obiektówki są ogromne.

Mając bałagan w strukturalnym kodzie można dojść do pewnej granicy, przy której czas potrzebny na dodanie nowych funkcjonalności czy wprowadzenie zmian zacznie rosnąć wykładniczo. Im ktoś jest lepszy tym dalej ma tą granicę, ale każdy kiedyś ją osiąga. Zaczynają pojawiać się proste błędy, znalezienie których jest coraz trudniejsze, spada motywacja, w końcu projekt nawet jeśli się uda go skończyć jest zbugowanym potworkiem, którego refaktoryzacją nikt inny potem nie chce się nawet zająć.

Inżynieria oprogramowania poszła mocno do przodu w ostatniej dekadzie, istnieją frameworki, które wprawdzie wymagają poświęcenia trochę czasu na naukę, ale po przekroczeniu progu oświecenia bardzo ułatwiają szybkie pisanie wysokiej jakości kodu. Testy jednostkowe upewniają, że można korzystać z gotowych części kodu nie martwiąc się o jego poprawność i nie trzeba od nowa wymyślać koła, a można się skupić na tym co nowe i unikalne dla projektu. Systemy kontroli wersji jak git pozwalają pracować równolegle wielu programistom, umożliwiają eksperymenty i pozwalają w każdej chwili wrócić do dowolnego wcześniej zapisanego stanu w pełni działającego kodu.

Jeśli chodzi o przestarzałe api mysql_, to sam fakt, że jego funkcje nie są napisane obiektowo nie jest tak istotny, jak to, że to api zatrzymało się w rozwoju na mysql w wersji 4.1. Praktycznie żadne nowości z wersji 5+ nie są obsługiwane, w szczególności nie ma prepared statements, które bardzo ułatwiają dbanie o bezpieczeństwo w przypadku gdy przetwarzamy takie zapytania na które użytkownik ma jakiś wpływ. Problemem jest także to, że w sieci jest mnóstwo przestarzałych poradników, napisanych ładnych parę lat temu, często z wysoką pozycją w google i ludzie niepotrzebnie od tego zaczynają naukę.

Jeśli ktoś chce się bawić programowaniem hobbystycznie, na własne potrzeby, dłubiąc sobie jakąś tam swoją stronkę, to może zostać przy proceduralnym php. Jeśli jednak ktoś myśli o pracy zarobkowej, to w tej chwili nie ma wielkiego wyboru, a za kilka lat nie będzie go miał wcale. Po prostu musi zająć się obiektówką, wzorcami projektowymi, poznać przynajmniej jeden popularny framework, założyć sobie repo na githubie, dorwać jakieś porządne ide do php i próbować się na tym wszystkim uczyć.


Podpisuje się rękami i nogami. Tylko "obiektówka". Na początku wygląda to strasznie, ale to pozory. A ostatecznie organizacja jest o niebo lepsza, wszystko ma swoje miejsce, a nie jest wrzucone do jednego gara, gdzie drobna zmiana np. wielkości zdjęć robi się półgodzinnym przeczesywaniem kodu. Co do IDE ja osobiście polecam codelobster smile.gif.
com
co do mysql_* to zostanie wyrzucony dopiero w php7 i wrzucony jako moduł pecla wiec to potrwa zanim zniknie wink.gif
zorobabel
Ja swoją naukę PHP zaczynałem w czasach kiedy powoli kończyła się wersja PHP4, dlatego też od początku wzrastałem z ideą obiektowości. Czasami zastanawiałem się czy tworzenie stada obiektów dla wygenerowania prostej strony ma większy sens, poza tym spada trochę wydajność. no i do tego trzeba jeszcze jakoś w głowie ogarnąć jak to wszystko sobie gdzieś tam krąrzy między obiektami. Wydaje się, że prościej było by strukturalnie.
Jedak nie dalej jak miesiąc temu miałem okazję trochę popracować dla firmy, która zajmuje się "rozwojem" sklepów opartych na starym poczciwym osCommerce. jak zobaczyłem co tam się dzieje, po kilku przeróbkach, to teraz już tylko obiektówka w mojej głowie smile.gif
Poza tym rozwój tego języka i jego najbliższa przyszłość związane są z tym sposobem programowania. Więc po prostu mówiąc nie ma wyjścia, trzeba się uczyć.
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.