![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mam sobie jakas klase (oczywiscie to tylko schemat (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ):
zawartosc metod jest dosc dluga, a musze teraz dodac jeszcze kilka/kilkanascie, nie chce robic klasy ktora bedzie zbym dluga (pod wzgledem linijek) głównie za wzgledu na czytelnosc... bardzo wyglodnym rozwiazaniem bylo by zapisanie kilku metod w osobnych plkach, jednak powstaje tu pewnen probelm :/ Nie znalazlem niczego co by umozliwiało zrobienie czegos takiego:
przeszukalem manual (Function Handling Functions) ale niczgo nie znalazlem... moglbym robic to w ten sposob: ale to jest ostateczne rozwiazanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tak wiec... czy istnieje sposob na "dynamiczne" stworzenie, ale wczytanie z innego pliku metod? Ten post edytował Crozin 10.04.2007, 14:35:49 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Po co? Klasa, jako obiekt służy do enkapsulacji - trzymania w jednym miejscu powiązanych ze sobą danych. To samo tyczy się metod. Nie wiem po co chcesz to dzielić na pliki. Mija się to z filozofią OOP.
edit: Co do pytania. Można tak zrobić: Plik: Klasa.php
Plik: metodaB.php
Uruchomienie kodu w pliku Klasa.php spowoduje, wyświetlenie sie na "hello world". Czyli tak jak chciałeś. Przy odrobinie zawzięcia i metod magicznych, można by to zautomatyzować. edit: Pamiętaj, że uruchomienie pliku metodaB.php nie w kontekście obiektu, spowoduje błąd parsera. edit: Oh, przepraszam, źle doczytałem Twoje pytanie. Jeżeli chodzi Tobie o dzielenie definicji klasy na pliki, to nie da rady. W manualu powinno być napisane, przynajmniej w User Notes. Ten post edytował LBO 10.04.2007, 15:04:27 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jest fajna zasada, bierze się karteczkę 10cm x 10cm i opisuje się na niej klasę, jak się nie mieści co ma robić, to znaczy że trzeba rozbić na więcej.
(opis.length != kodu.length (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) EDIT: Czyli jak masz tyle metod, to może masz źle zbudowaną klasę... Ten post edytował Sedziwoj 10.04.2007, 17:26:03 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Tyle, że ta koncepcja nie akceptuje elementów prywatnych. I nie możesz w ten sposób implementować metod magicznych, bo php tego nie rozpozna. Nie będzie również działać z interfejsami/całym zaawansowanym OOP. Pozdrawiam.
Ten post edytował Jabol 10.04.2007, 17:42:23 |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat zawartosc metod jest dosc dluga, a musze teraz dodac jeszcze kilka/kilkanascie, nie chce robic klasy ktora bedzie zbym dluga (pod wzgledem linijek) głównie za wzgledu na czytelnosc 1. Wyglada na to ze klasa ma za duzo zobowiazan ("bierze się karteczkę 10cm x 10cm i opisuje się na niej klasę, jak się nie mieści co ma robić, to znaczy że trzeba rozbić na więcej.") 2. Od tego masz edytor zeby latwo sie po kodzie skakalo; lista metod, skok do definicji zaznaczonej metody itd |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
trudno (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
pozostaje to przemyslec jeszcze raz i najwzej napisac od nowa... (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
zamiast rozbijać klasę na części, zdecydowanie lepiej jest skorzystać z dziedziczenia, i w klasach potomnych uzupełniać metody, w zależności od ich funkcji.
Jest to nie tylko o wiele czytelniejsze, ale też zgodne z paradygmatem OOP. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
zamiast rozbijać klasę na części, zdecydowanie lepiej jest skorzystać z dziedziczenia, i w klasach potomnych uzupełniać metody, w zależności od ich funkcji. Jest to nie tylko o wiele czytelniejsze, ale też zgodne z paradygmatem OOP. A na czym rozbicie polega Twoim zdaniem? Bo jak dla mnie to właśnie wykorzystanie dziedziczenia kompozycji/agregacji itp., bo bez sensu jest rozbijać kod na dwie klasy bez rozplanowania co one mają robić. (bo jak sie nie zrobi logicznego rozbicia, tylko techniczne to nic nie zmienia) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:23 |