![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cześć, mam do was pytanie - czy mogę używać konstruktora jak normalnej metody? Chodzi mi o to, czy mogę np. wewnątrz metody użyć czegoś takiego: $this->__construct()?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
PHP umożliwia coś takiego, ale jest to bardzo zła praktyka.
1. Po co miałbyś robić coś takiego? 2. Wrzuć kod który chcesz wywołać do osobnej metody i wywołaj ją z konstruktora jak i ze swojej innej metody. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Otóż chciałbym napisać metodę, która pobierałaby danę z bazyb danych i następnie przypisywała je do obiektu. W moim wypadku wygląda to tak:
czemu miałaby to być zła praktyka? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Konstruktor jest w OOP dosyć specyficzną metodą. W PHP co prawda nie istnieją jakieś rygorystyczne "przepisy" odnośnie jego stosowania, ale nie zdziwiłbym się, gdyby używanie konstruktora jak zwykłej metody z czasem zaczęło skutkować jakimiś dziwnymi zachowaniami. Ponadto takie używanie konstruktora sprawiłoby, że Twój kod straciłby na czytelności.
2. Nic nie stoi na przeszkodzie aby zapisać to w taki sposób: Nie tracisz absolutnie niczego, a Twój kod zaczyna być "standardowy" i czytelny. 3. Jednak, w ogóle metoda readdb() w żadnym wypadku nie powinna znaleźć się w tej kasie. Powinna być w innym obiekcie i zwracać (tworzyć) nowy obiekt: 4. Widzę, że ten kod ma służyć jako mapper rekordów z bazy danych na obiekty, tj. ORM. Od razu radzę skorzystać z gotowego, dobrego narzędzia (np. Doctrine), a nie pisać to samemu. ORM jest jednak dosyć rozbudowanym i skomplikowanym narzędziem, a zbudowanie którego potrzeba ogromu czasu, który można lepiej spożytkować. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 06:52 |