![]() |
![]() ![]() |
![]() |
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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.
![]() 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. ![]() |
|
|
![]()
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. -------------------- |
|
|
![]()
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. |
|
|
![]()
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:
|
|
|
![]()
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
![]() 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 ![]() Nalf -------------------- Gadu-Gadu: 3909164
|
|
|
![]()
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 ...
-------------------- |
|
|
![]()
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.
-------------------- |
|
|
![]()
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 |
|
|
![]()
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
|
|
|
![]()
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
|
|
|
![]()
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 |
|
|
![]()
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"
![]() -------------------- Gadu-Gadu: 3909164
|
|
|
![]()
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'); ?>
|
|
|
![]()
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... ![]() -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
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'); ?>
|
|
|
![]()
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..."
|
|
|
![]()
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 ![]() 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'); ?>
|
|
|
![]()
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" ![]() 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ł. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 18:47 |