Piotr P.

Piotr P. Software Developer

Temat: obiektowa obsługa zdarzeń. czy tworzyć osobne klasy dla...

Daniel C.:
tak :)

ale są akcje które zawierają kilkadziesiąt linijek ;)
moje pytanie wynika bardziej z przyzwyczajenia do pewnych wyrobionych sposobów programowania. przechodzę na OOP stąd to pytanie.

Czy proceduralne czy OOP nie ma znaczenia. Każda technika ma swoje plusy i minusy. my_super_news_class_add różni się jednym znakiem od my_super_news_class::add ;)

Popatrz jeszcze raz na swój przykład ( plik per akcja ):

news.php
news.add.php
news.del.php

Jakby nie patrzeć naszkicowałeś swoją klasę z metodami.

news.php = Klasa news
news.add.php = metoda add klasy news
news.del.php = metoda del klasy news

Zamiast wielu plików z kodem, wczytujesz jeden i pozwalasz na wykonywanie akcji.

require_once 'news.php';

/* wersja toporna */

$n = new news();

switch ($_GET['action']) {

case: 'add':
$n->add($param);
break;

/* etc */
}

/* werjsa lepsza jeśli masz więcej akcji i modułów do obsłużenia */

$n = news::factory($module_name, $action);
$n->execute();

BTW, jeden plik z 100.000 lini kodu wczyta się zdecydowanie szybciej niż 100.000 plików z jedną linijką każdy ;)

konto usunięte

Temat: obiektowa obsługa zdarzeń. czy tworzyć osobne klasy dla...

Piotr P.:

BTW, jeden plik z 100.000 lini kodu wczyta się zdecydowanie szybciej niż 100.000 plików z jedną linijką każdy ;)

O ile szybciej ?
Piotr P.

Piotr P. Software Developer

Temat: obiektowa obsługa zdarzeń. czy tworzyć osobne klasy dla...

Michał Wujas:
>
BTW, jeden plik z 100.000 lini kodu wczyta się zdecydowanie szybciej niż 100.000 plików z jedną linijką każdy ;)

O ile szybciej ?

Przyjmuje że jedna operacja I/O dysku jest szybsza niż 100.000 takich operacji. Alokacja pamięci dla pliku który ma 100.000 lini kodu na pewno jest *zdecydowanie szybsza*. Mi się nawet nie chce tego testować :)

konto usunięte

Temat: obiektowa obsługa zdarzeń. czy tworzyć osobne klasy dla...

Piotr P.:
Michał Wujas:
>
BTW, jeden plik z 100.000 lini kodu wczyta się zdecydowanie szybciej niż 100.000 plików z jedną linijką każdy ;)

O ile szybciej ?

Przyjmuje że jedna operacja I/O dysku jest szybsza niż 100.000 takich operacji. Alokacja pamięci dla pliku który ma 100.000 lini kodu na pewno jest *zdecydowanie szybsza*.

Piotr - masz rację. Tyle że w tym wypadku chodzi jak rozumiem o to czy aplikacja PHP ma być w jednym czy 100.000 plików. Wg mnie jednak szybciej będzie w 100.000 plików, bo przykłady serwisów, w których wywołuje się 100% kodu w przypadku co najmniej jednej strony WWW można by pewnie policzyć na palcach jednej ręki...

Natomiast podział klasy na pliki w którym każda akcja jest w osobnym pliku jest podziałem... powiedzmy nieprzemyślanym i zbyt zgrubnym. Lepiej podzielić wg domeny - cron, mail, administracja, użytkownicy anonimowi... - ale oczywiście to zależy bardzo od aplikacji.
Piotr P.

Piotr P. Software Developer

Temat: obiektowa obsługa zdarzeń. czy tworzyć osobne klasy dla...

Piotr Likus:
Piotr - masz rację. Tyle że w tym wypadku chodzi jak rozumiem o to czy aplikacja PHP ma być w jednym czy 100.000 plików. Wg mnie jednak szybciej będzie w 100.000 plików, bo przykłady serwisów, w których wywołuje się 100% kodu w przypadku co najmniej jednej strony WWW można by pewnie policzyć na palcach jednej ręki...

Ah, fakt :) Dzięki. Ja przez cały czas myślałem o wczytywaniu tych wszystkich plików w trakcie jednego requestu :)
Maciej W.

Maciej W. a czy ty masz swój
ręcznik?...

Temat: obiektowa obsługa zdarzeń. czy tworzyć osobne klasy dla...

kilka słów ode mnie...

czy nie łatwiej podzielić sobie aplikację (a raczej jej funkcjonalność) na tzw powtarzające się elementy. Mam na myśli iż jeśli budujemy jakąś aplikację to bardzo często robimy listingi, zapis do bazy danych bądź edycję. Można te trzy czasem nawet dość skomplikowane czynności zapisać w jednej klasie i później kolejnymi klasami dziedziczyć po nich. Przykład

mamy klasę db.class.php w której mamy pięć (chyba, że coś pomijam) metod. Zapis, odczyt, weryfikacja danych, kasowanie, edycja.

Mamy dział zarządzania użytkownikami w naszej aplikacji no to gdzieś w bazie jest tabela powiedzmy 'users' i tworzymy klasę USERS.class.php która dziedziczy po DB. W pliku tym jest już zdefiniowana struktura tabeli i ewentualne indeksy do innych tabel.

Wywołując USERS.class.php za pomocą metody weryfikacji (z klasy DB) przypisujemy sobie które zmienne będą zapisane w których polach bazy danych (np asocjacyjna tablica w której nazwy pól oznaczają nazwy kolumn w bazie danych, można pociągnąć od razu z POSTa o ile się dobrze przygotuje formularz, bądź można sformatować już po wywołaniu klasy) no i wywołując metodę ADD mamy załatwione zapisanie danych do bazy. W plik DB możemy jeszcze wbić obsługę bazy danych i sprawa załatwiona. Wówczas każdy moduł może mieć tak naprawdę jeden plik wykonawczy w zależności od parametru, i jeden plik z listingami, formularzami ewentualnymi innymi skryptami jakie nam będą potrzebne.

Mamy w tej chwili przejrzystość struktury plików oraz łatwe zarządzanie bazą danych.

Następna dyskusja:

Ciekawe, nietypowe, innowac...




Wyślij zaproszenie do