Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Kurs OO [Nalfein]
Seth
post 21.03.2004, 23:36:38
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Uwagi, pytania zwiazane zwiazane z artykulem Nalfeina "Kurs OO" prosze pisać w tym temacie.
Go to the top of the page
+Quote Post
Bora
post 22.03.2004, 02:38:18
Post #2





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


cudo. Pomimo póżnej pory musiałem przeczytać i już czekam na kolejne odcinki z tej serii.
Go to the top of the page
+Quote Post
Bora
post 22.03.2004, 13:14:23
Post #3





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


piękny przykład ale zawiera błędy. sad.gif
php 5.0.0b4 nie idzie.
Nigdzie w manualu nie znalazłem o tym:
function pobierz(DaneUzytkownika $szukamy)
i z przykładu wynika że nie działa. sad.gif
Go to the top of the page
+Quote Post
scanner
post 22.03.2004, 13:21:28
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Bora, czy zdajesz sobie sprawę, że to nie jest tutorial, tylko kurs?
Nie wkleja się bezmyślnie kodum, tylko go analizuje. To jest podstawowa róźnica.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Bora
post 22.03.2004, 13:52:52
Post #5





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


Po doczytaniu w Zend2-engne okazuje sie że skłądnia jest dobra.
sorrka. Mino to w kodzie są literówki.
Go to the top of the page
+Quote Post
kubatron
post 22.03.2004, 14:24:01
Post #6





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


Mi bardzo się przyda ten kurs bede się na nim opierał, bo widze że wkoncu jest jeden rzetelny serwis z dobrymi artykułami a nie powtarzajacymi sie nudnymi,dziurawymi, skryptami.... :wink:
Go to the top of the page
+Quote Post
Nalfein][WR
post 25.03.2004, 20:19:47
Post #7





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 22.04.2003
Skąd: Żory / K-ce

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


Witajcie. Cieszę się, że już na tym etapie, po kilku dniach publicznego udostępnienia pojawiło się tyle pozytywnych opinii, to tylko mobilizuje do działania smile.gif Kod piszę już pod działajace PHP5, wg. tego co ludzie pisali o jego możliwościach, to było zresztą tylko wprowadzenie, mające zachęcić do uczenia się obiektówki, przejścia z PHP4 do PHP5 itd. Wdalszych częściach będę zaznaczał co działa w PHP5, a co w PHP4 - może zrobię osobny rozdział o różnicach. Może też powstanie kurs OO dla znających C++ czy Javę, taka prosta specyfikacja składni dla potrafiących już pisać obiektowo, jednak nie mających jeszcze do czynienia z php, napisana mniej "epickim" stylem, a więc i bardziej zwięzła.

Właśnie otrzymalem od scannera wersję z poprawionymi literówkami i nie pozostaje mi nic innego jak dopisać kolejny odcinek. Oczekujcie go w ciągu tygodnia, góra dwóch.

Pozdrowienia dla wszystkich moich czytelników tongue.gif
Nalf


--------------------
Gadu-Gadu: 3909164
Go to the top of the page
+Quote Post
PMadej
post 26.03.2004, 12:54:46
Post #8


Vice-Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 395
Pomógł: 0
Dołączył: 7.08.2003
Skąd: Kielce

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


Ten artykuł jest super wczoraj do 3 siedziałem żeby go przeczytać i udało mi sie ale pozostal pewien niedosyt bo urywa sie on tak jakby w polowie a ja chce wiecej ... juz nie moge sie doczekac kolejnych czesci ...


--------------------
Go to the top of the page
+Quote Post
scanner
post 30.03.2004, 11:44:16
Post #9





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Dzisiaj rozszerzony został II rozdział kursu. Miłej lektury.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
sobstel
post 5.04.2004, 21:53:09
Post #10





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


mi sie nie podoba w tym kursie to, ze jest to niby wstep dla chcących zaczac programowac obiektowo, ale jest troche chaotycznie. momentami autor zwraca sie jakby czytelnik znal juz jak to wyglada w php4 i mowi tylko o zmianach jakie zeszly w php5, a potem tlumaczy jak laikowi progr.obiekt. w ogole. ogolnie po prostu mozna sie nieco pogubic. nie wiem wlasciwie dla kogo to jest artykul... dla przechodzacych z php4 na php5 czy tez dla poczatkujacych w obiektowym w ogole? teoretycznie dla tych i dla tych, a praktycznie wychodzi chaos. takie jest moje zdanie jako poczatkujacego (obiektowe tylko troche liznalem w c++)


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Nalfein][WR
post 7.04.2004, 19:47:39
Post #11





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 22.04.2003
Skąd: Żory / K-ce

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


Chodzi konkretnie o jakiś fragment czy tylko o ten fragment końcowy, który dopisałem? Tamten przeredaguję go i przeniosę go do innego rozdziału. Co do formuły - dla początkujących piszących pod PHP5. Dla przenoszących się z PHP4 do PHP5 będzie osobny rozdział. Chaosu chciałem uniknąć, jednak także zachować wmiarę luźny styl, aby się to łatwo pochłaniało. Wskaż, gdzie wieje chaosem, a zobaczę co się da z tym zrobić.


--------------------
Gadu-Gadu: 3909164
Go to the top of the page
+Quote Post
mistrzu
post 12.04.2004, 15:29:44
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 30.08.2003

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


Zgadzam się, że początek jest bardzo chaotyczny. We wstępie umieszczono zbyt wiele informacji, a wystarczyło tylko krótko i ogólnie wyjaśnić na czym polego oop. W przeciwieństwie do pierwszego rozdział drugi jest SUPER!


--------------------
Warsztat: Apache 2.0.48 | MySQL 4.1.1 | PHP 5.0.0RC1 | Crimson Editor
Go to the top of the page
+Quote Post
sobstel
post 12.04.2004, 16:22:05
Post #13





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


@nalfein, oto moje uwagi. najlepiej najpierw opisac podstawy prog obiektowego w php4, a potem zmiany jakie sie dokonaly w php5. najlepiej chyba po prostu na samym poczatku wytlumaczyc ogolnie co to klasa, jaka jej struktura, co to konstruktor, destruktor, metoda. jaka roznica miedzy klasa a obiektem, sposob wywolywania, takze funkcji, dostep do zmiennych. potem dziedziczenie... i juz cale podstawy zrobione. wszystko jasne, napisane bardzo prostym jezykiem, z samymi bardzo prostymi przykladami typu sumowanie liczb...


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Nalfein][WR
post 12.04.2004, 19:24:57
Post #14





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 22.04.2003
Skąd: Żory / K-ce

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


Ok, przemyślę to. Rozdział pierwszy zostaje jako "pokaz możliwości" smile.gif


--------------------
Gadu-Gadu: 3909164
Go to the top of the page
+Quote Post
Orkan
post 22.04.2004, 00:36:01
Post #15





Grupa: Zarejestrowani
Postów: 55
Pomógł: 4
Dołączył: 19.05.2003
Skąd: Gdańsk

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


Miesiąc minął już prawie od publikacji, więc nie wiem jakie zmiany zaszły w artykule, jednak dopiero co przeczytałem ten text i mam parę pytań "technicznych". Programuję w C++ od ok. 2 lat więc mam już jako takie pojęcie o OO, jednak php niektóre rzeczy traktuje odmiennie, więc prosiłbym o wyjaśnienie:

Rozdział 1 -> Rozwiązania obiektowe

[php:1:5c8d52847b]<?php
class DaneUzytkownika
{
// nasza wlasciwosc, chroniona przed dostepem z zewnatrz
protected $dane = array();

function __construct($dane = array())
{
if (is_array($dane))
$this->dane = $dane;
else if ($dane instanceof DaneUzytkownika)
$this->dane = $dane->pobierzJakoTablica());
}

...

?>[/php:1:5c8d52847b]


Czy pole klasy $dane i wartość przekazywana do konstruktora $dane to ta sama zmienna? Jeżeli nie, to dla przejrzystości kodu można by zastosować inną nazwę żeby się nawzajem nie myliły. W C++ nazywa się to przesłanianiem zmiennej, czy jakoś tak, ale w php jestem nowicjuszem więc się pytam.

pzdr.


--------------------
The fastest app with PHP: <?php die('Hello World'); ?>
Go to the top of the page
+Quote Post
DeyV
post 22.04.2004, 09:42:22
Post #16





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




$this->dane to odwołanie do protected $dane = array();

Natomiast $dane pojawiające się jako paramter konstruktora to osobna zmienna widoczna tylko wewnątrz tej metody. Czyli podobnie jak w C, jest to inna zmienna.
Jednak w tym przypadku, z uwagi na to, że jest ona niemal odrazu 'przepisywana' do odpowiedniego atrybutu, więc użycie tej samej nazwy nie powinno być kłopotliwe.

Dzieje się tak jeszcze z jednego powodu. W php wewnątrz klasy nie można się odwołać do atrybutów klasy tylko tak: $this->atrybut. Nie ma czegoś takiego, jak przezroczysty dostęp do atrybutów, z którym się spotykamy w C++, więc nie ma też większego ryzyka, że programista się pomyli... smile.gif


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Orkan
post 23.04.2004, 13:18:54
Post #17





Grupa: Zarejestrowani
Postów: 55
Pomógł: 4
Dołączył: 19.05.2003
Skąd: Gdańsk

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


Dzięki za to wyjaśnienie, jednak jeszcze jednej rzeczy nie rozumiem, dalej w obrębie konstruktora 8)

W linii 7, w parametrze konstruktora, do zmiennej $dane przypisywana jest tablica: $dane = array()

Kiedy wykona się instrukcja warunkowa: else if ($dane instanceof DaneUzytkownika), bo przecież już na wstępie $dane jest inicjowana tablicą?


--------------------
The fastest app with PHP: <?php die('Hello World'); ?>
Go to the top of the page
+Quote Post
DeyV
post 23.04.2004, 14:39:15
Post #18





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




zapis [php:1:8687471add]<?php
function nazwa_funckji( $paramtetr = array() )
?>[/php:1:8687471add]
oznacza, że $parametr nie jest wymagany, czyli w przypadku wywołania
[php:1:8687471add]<?php
nazwa_funckji();
?>[/php:1:8687471add]
przyjmie on podaną wartość (w tym przypadku stanie się pustą tablicą)

Jeśli jednak wywołamy tą funkcję z parametrem, np. [php:1:8687471add]<?php
nazwa_funckji( 'ala ma kota' );
?>[/php:1:8687471add]
to automatycznie $parametr przyjmie wartość "ala ma kota" która to jest zwykłym stringiem.

Dlatego też, z uwagi na to, że php pozwala na takie 'podmienianie' typów zmiennych, przydatne jest sprawdzanie typu danej zmiennej już w kodzie.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Orkan
post 23.04.2004, 16:59:07
Post #19





Grupa: Zarejestrowani
Postów: 55
Pomógł: 4
Dołączył: 19.05.2003
Skąd: Gdańsk

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


Czylim mógłbym napisać konstruktor bez wartości domyślnej, np:
[php:1:4a4bde714a]<?php
class DaneUzytkownika
{
// nasza wlasciwosc, chroniona przed dostepem z zewnatrz
protected $dane = array();

function __construct($dane)
{
if(is_array($dane))
$this->dane = $dane;
else if($dane instanceof DaneUzytkownika)
$this->dane = $dane->pobierzJakoTablica();
else
$this->dane = array();
}

...

}
?>[/php:1:4a4bde714a]

i ten kod będzie działał tak samo jak kod napisany przez Nalf'a?

PS1. Wiem że ten kod jest mniej "elegancki" - pytam się tylko czysto teoretycznie, być może Nalf uwzględni te dywagacje w kursie dla ludków przechodzących z C++ na php smile.gif

PS2. Jednak teraz widzę, że ostatnia linia jest zbędna, ponieważ pole chronione klasy $dane jest na starcie inicjowane tablicą.


--------------------
The fastest app with PHP: <?php die('Hello World'); ?>
Go to the top of the page
+Quote Post
Pianandrill
post 26.05.2004, 00:41:04
Post #20





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 21.04.2003

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


Witam
Dla mnie ten artykuł jest bardzo przydatny, jeden z niewielu traktujących o OO jako takim a nie tylko o konstruowaniu klas i uzywaniu metod :|
Niestety.. pozostaje niedosyt...
Najbardziej zaintrygował mnie fragment rodziału I - Rozwiązanie obiektowe... niestety do tej pory byłem kimś kto robił to co tam napisałeś gdzieś - wrzucałem funkcje do worka zwanego klasą i instatnowałem to :| na szczęście (dla mnie) moje sumienie działało prawidłowo i od zawsze wiedziałem ze to jest dalekie od prawidłowości dlatego wciąż poszukiwałem "ścieszki obiektowej" winksmiley.jpg
Mój problem polega na tym, ze nie potrafię mysleć o kodzie obiektowo, wiez ze jest to problem analizy i modelowania danych przede wszystkim, ale szukałem w Twoim artykule wskazówek jak konstrułować klasy aby były elastyczne, jak dziwdziczyć i co. Jak wydzielać klasy abstrakcyjne... po prostu podstaw obiektowości.
Liczę bardzo na to, że będziesz kontynuował ten artykuł.
Jeszcze przydał by się jakiś rozdział o optymalizacji i wydajności.
Wiadomo, że php różni się od innych języków środowiskiem pracy. Każde wywołanie skryptu wiąże sie z nowymi odwołaniami do bd i instancjami obiektów. Na ile sobie można pozwolic, w jakim kierunku budować obiekty aby nie obciążały niepotrzebnie bd i systemu kolejnymi wystąpeniami. O tym chciał bym przeczytać.
Dzięki za artykuł.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 23:02