Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Proceduralny czy obiektowy?
Neymar11
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 20.02.2015
Skąd: localhost

Ostrzeżenie: (10%)
X----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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...
Go to the top of the page
+Quote Post
SwiezuPL
post
Post #2





Grupa: Zarejestrowani
Postów: 38
Pomógł: 9
Dołączył: 16.11.2014
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


żadna filozofia (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
Neymar11
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 20.02.2015
Skąd: localhost

Ostrzeżenie: (10%)
X----


@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 (IMG:style_emoticons/default/smile.gif)

dzieki ci @SwiezuPL (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
SwiezuPL
post
Post #4





Grupa: Zarejestrowani
Postów: 38
Pomógł: 9
Dołączył: 16.11.2014
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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()


Ten post edytował SwiezuPL 2.05.2015, 20:34:53
Go to the top of the page
+Quote Post
Neymar11
post
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 20.02.2015
Skąd: localhost

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
SwiezuPL
post
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 9
Dołączył: 16.11.2014
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


(IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif)

Ten post edytował SwiezuPL 2.05.2015, 20:55:31
Go to the top of the page
+Quote Post
Neymar11
post
Post #7





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 20.02.2015
Skąd: localhost

Ostrzeżenie: (10%)
X----


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_* (IMG:style_emoticons/default/biggrin.gif)
Juz sie przyzwyczajam powoli...
Dzieki ci wielkie za ta pomoc, teraz odrobina checi i za chwile
bede zapier*****al w obiektowym mysqli_* (IMG:style_emoticons/default/biggrin.gif)

Cheers * < * neymar11

Hehe nawet sygnaturke zmienilem ;P
Go to the top of the page
+Quote Post
SwiezuPL
post
Post #8





Grupa: Zarejestrowani
Postów: 38
Pomógł: 9
Dołączył: 16.11.2014
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Neymar11 @ 2.05.2015, 22:16:25 ) *
bede zapier*****al w obiektowym mysqli_* (IMG:style_emoticons/default/biggrin.gif)


Naucz się całej obiektówki w PHP (IMG:style_emoticons/default/wink.gif)
Pracowanie tylko na obiekcie mysqli w strukturalnym trochę się "miesza".
Go to the top of the page
+Quote Post
Neymar11
post
Post #9





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 20.02.2015
Skąd: localhost

Ostrzeżenie: (10%)
X----


mi bajzel nie przeszkadza (IMG:style_emoticons/default/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

(IMG:style_emoticons/default/smile.gif)

to sie nazywa bajzel... no ale troche porzadku jest (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/ohmy.gif)

Cheers * < * neymar11
Go to the top of the page
+Quote Post
SwiezuPL
post
Post #10





Grupa: Zarejestrowani
Postów: 38
Pomógł: 9
Dołączył: 16.11.2014
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


^ http://pl.wikipedia.org/wiki/Kod_odpowiedzi_HTTP
Go to the top of the page
+Quote Post
pmir13
post
Post #11





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
Martin-ZG
post
Post #12





Grupa: Zarejestrowani
Postów: 28
Pomógł: 3
Dołączył: 23.07.2009

Ostrzeżenie: (10%)
X----


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 (IMG:style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


co do mysql_* to zostanie wyrzucony dopiero w php7 i wrzucony jako moduł pecla wiec to potrwa zanim zniknie (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
zorobabel
post
Post #14





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.05.2014

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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ć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 23:22