• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Klasy czy same funkcje

Object Storage Arubacloud
0 głosów
517 wizyt
pytanie zadane 3 grudnia 2017 w PHP przez Pico Obywatel (1,330 p.)

Hejka wszystkim. Chciał bym poznać wasze zdanie na pewien temat. CHodzi tu o funkcje i klasy. Załóżmy że mamy plik index.php i w nim includujemy plik w którym są tylko funkcje czyli 

function jakaśfunkcja()
{
echo "coś tu się dzieje ale nie wiadomo co";
}

function kolejnafunckcja()
{
echo "a tu się dzieje co innego jednak dalej nikt nie wie co";
}

lub plik gdzie jest klasa a w niej funkcje 

class FajnaKlasa()
{
function jakaśfunkcja()
{
echo "coś tu się dzieje ale nie wiadomo co";
}

function kolejnafunckcja()
{
echo "a tu się dzieje co innego jednak dalej nikt nie wie co";
}
}

I tu pojawia się do was pytanie. Czy to coś zmienia w działaniu strony czy nie do końca. Przynajmniej według moich wstępnych obserwacji używanie pierwszego przykładu chyba nie jest złe, ale mogę się mylić.

2
komentarz 3 grudnia 2017 przez Tomek Sochacki Ekspert (227,510 p.)
Poczytaj sobie jakieś artykuły albo książkę o programowaniu obiektowym ( OOP ). Gdy dowiesz się chociaż czysto teoretycznie czym są klasy, interfejsy, abstrakcje, dziedziczenie itp. itd. to szybko wejdziesz w temat wzorców projektowych w OOP.

Gdy to poznasz to sam sobie odpowiedz na Twoje pytanie i ocenisz jakie zalety daje OOP :)
komentarz 3 grudnia 2017 przez Pico Obywatel (1,330 p.)
Wiesz, ogólnie to ja siedzę w laravelu ale tak spojrzałem na dawny projekt i tam z takiego czegoś korzystałem i jakoś to działało, nie licząc tego że z braku umiejętności narobiłem trochę kodu spaghetti.

1 odpowiedź

0 głosów
odpowiedź 4 grudnia 2017 przez Benek Szeryf (91,010 p.)

Czy to coś zmienia w działaniu strony czy nie do końca.

Nie, nie zmienia niczego z punktu widzenia użytkownika. To mniej więcej coś takiego, jak elektrownie. Dla ludzi nie ma znaczenia, czy prąd dostarcza elektrownia węglowa, czy wiatrowa. Ważne, że jak podłączą pralkę, to działa.

Tworzenie klas tylko po to, by zastąpić funkcje metodami z tych klas, nie jest w ogóle konieczne. Aczkolwiek zdarza się, że klasa ma same metody (nie jestem specjalistą PHP, potrzebowałem po prostu mechanizmu obsługującego sesje w jednym z prostych projektów, które tworzyłem dla siebie):

class Session
{
    public static function addVar($all)
    {
        foreach ($all as $key => $val) {
            $_SESSION[$key] = $val;
        }
    }

    public static function getVar($name)
    {
        return $_SESSION[$name];
    }

    public static function updateVar($name, $upValue)
    {
        $tmp[$name] = $upValue;
        self::addVar($tmp);
    }

    public static function start()
    {
        if (isset($_SESSION) === FALSE) {
            session_start();
        }
    }

    public static function stop()
    {
        if (isset($_SESSION)) {
            session_destroy();
        }
    }
}

Tworzenie klas ma sens wtedy, kiedy projekt chcesz pisać obiektowo. Jest to trudniejsze do zrozumienia, bo w tym całym ekosystemie występuje kilka nieintuicyjnych abstrakcji, których nie ma w programowaniu strukturalnym. Zauważ jednak, że dla człowieka niezwiązanego z programowaniem, przekazywanie argumentów do funkcji, czy zwracanie wartości funkcji przez wskaźnik też jest sporą abstrakcją. To co zyskujesz z klasami i całą otoczką OOP, to jeszcze większa elastyczność projektu, brak dublowania kodu i ułatwienie pracy wielu osobom na raz. Oczywiście to wszystko jest prawdą, jeśli architektura aplikacji jest przemyślana.

Z punktu widzenia pamięci (przynajmniej bazując na wiedzy z C++, nie wiem jak jest z PHP) wydajniejsze jest tworzenie funkcji, ponieważ wymaga to mniejszych zasobów. Żeby wywołać metodę w klasie, program musi obsłużyć całą klasę, pomimo że nie korzysta z niej w pełni. Jest to redundancja. Tak więc, jeśli nie potrzebujesz klas, a same funkcje, to lepiej ograniczyć się do tych ostatnich.

komentarz 4 grudnia 2017 przez Pico Obywatel (1,330 p.)
Dobra a więc zakładając że nie korzystam z abstrakcji i td tylko z samych funkcji to klasy nie są mi potrzebne ?
komentarz 4 grudnia 2017 przez Comandeer Guru (601,110 p.)
@Pico w teorii nie są… tylko jaki jest sens zaprzęgać do pracy spory język obiektowy jeśli z tej obiektówki się nie będzie korzystać?
komentarz 4 grudnia 2017 przez Pico Obywatel (1,330 p.)
W pewnym sensie masz rację, ale idąc tą logiką równie dobrze można powiedzieć po co kupować ferrari skoro nie będzie się korzystało z jego pełnej mocy, a poza tym to chyba programista powinien używać nie tego co jest uznawane za poprawne tylko to co jest dla niego wygodniejsze, no chyba że mówimy już o pracy np w korpo to wtedy można polemizować, gdyż firmy w większości chyba wymagają OOP
komentarz 4 grudnia 2017 przez Comandeer Guru (601,110 p.)

A jak dla kogoś wygodniejsze jest stosowanie jednoliterowych nazw zmiennych i operatorów trójkowych zamiast ifów do wszystkiego? Po to środowisko wypracowało pewne praktyki, żeby zachowywać odpowiednio wysoką jakosć kodu. I nie jest to tak, że nie wykorzystujesz pełnej mocy Ferrari. Po prostu nie chcesz z niego robić bryczki konnej ;)

komentarz 4 grudnia 2017 przez Pico Obywatel (1,330 p.)
Znaczy się tak jak pisałem gdzieś tu wyżej to ja siedzę w laravelu ale kiedyś zrobiłem sklep własnie na takiej podstawie z funkcjami i działało to tylko że czytelność kodu była masakryczna. Z aktualną wiedzą potrafił bym to zrobić tak aby projekt było łatwo rozbudować pod warunkiem że komuś by się nie zachciało używać abstrakcji i rzeczy przeznaczonych tyko dla OOP co według mnie jest możliwe do osiągnięcia nawet w dobrym porjekcie z czytelnym kodem i bez wielokrotnego powielania kodu.

Podobne pytania

92,568 zapytań

141,422 odpowiedzi

319,641 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...