Rozumiem twoje zamieszanie na podstawie podanego przez ciebie przykładu. To naprawdę kiepski sposób na użycie klasy ... i tylko dlatego, że klasa jest używana, nie powoduje OOP systemu.
W przypadku Hybrid po prostu używają klasy do przestrzeni nazw swoich funkcji. Biorąc pod uwagę, hybrydowy to motyw ramy odbywa się to tak, że dziecko motywy można ponownie używać nazw funkcji bez deweloper konieczności martwienia się o nazwy kolizji. W wielu przypadkach struktura motywu (motyw nadrzędny) jest tak złożona, że wielu programistów motywów podrzędnych nigdy nie zrozumie dokładnie, co dzieje się pod maską.
Gdyby Hybrid nie używał struktury klas, twórcy motywów potomnych musieliby wiedzieć, jakie były wszystkie istniejące wywołania funkcji, aby mogli uniknąć ponownego używania nazw. I tak, możesz po prostu poprzedzić wszystkie swoje funkcje unikalnym ślimakiem, ale to sprawia, że kod jest trudny do odczytania, trudny w utrzymaniu i z natury nie nadaje się do ponownego użycia, jeśli opracujesz kolejne systemy, które chcą korzystać z tej samej funkcjonalności.
Aby odpowiedzieć na twoje pytania
Wtf? Po co to robić? Oczywiście nie będziesz używać dwóch lub więcej wystąpień tego samego motywu w tym samym czasie.
Nie, nie będziesz używać dwóch lub więcej instancji tego samego motywu. Ale tak jak powiedziałem, pomyśl o strukturze klasy w tym przypadku jako o przestrzeni nazw funkcji, a nie o tworzeniu tradycyjnej instancji obiektu. Łączenie wszystkiego w jedną klasę i tworzenie instancji w celu wywoływania metod ( myClass->method();
) lub wywoływania metod bezpośrednio ( myClass::method();
) to bardzo czysty sposób na uporządkowanie przestrzeni nazw w sposób czytelny i wielokrotnego użytku.
Oczywiście zawsze możesz użyć czegoś takiego myClass_method();
, ale jeśli chcesz ponownie użyć dowolnego z tych kodów w innym motywie, wtyczce lub innej ramce, musisz wrócić i zmienić wszystkie swoje prefiksy. Utrzymywanie wszystkiego w klasie jest czystsze i pozwala znacznie szybciej przebudowywać i ponownie wdrażać.
Załóżmy, że wtyczki robią to dla przestrzeni nazw (co jest śmieszne), ale jaka jest wymówka motywu? Czy coś brakuje?
W większości sytuacji zgodziłbym się z tobą. Jednak większość ta szybko zanika. Prowadzę kilka witryn w instalacji MultiSite, które używają odmian tego samego motywu. Zamiast ponownie tworzyć ten sam motyw w kółko z niewielkimi różnicami, mam jedną „klasę” dla motywu nadrzędnego i wszystkie motywy podrzędne rozszerzają tę klasę. To pozwala mi zdefiniować niestandardowe funkcje dla każdej witryny, jednocześnie zachowując ogólne poczucie jednolitości w całej sieci.
Z jednej strony twórcy motywów mogą wybrać oparte na klasach podejście do przestrzeni nazw swoich funkcji (co nie jest śmieszne, jeśli pracujesz w środowisku, w którym wielokrotnie używasz fragmentów tego samego kodu). Z drugiej strony twórcy motywów mogą wybrać podejście oparte na klasach w celu łatwego rozszerzenia o motywy potomne.
Jaka jest zaleta kodowania takiego motywu?
Jeśli korzystasz tylko z Hybrid w swojej witrynie, niewiele wiesz o korzyściach dla Ciebie jako użytkownika końcowego. Jeśli tworzysz motyw podrzędny dla Hybrid, istnieją zalety związane z przestrzenią nazw i rozszerzalnością. Jeśli pracujesz dla ThemeHybrid , zaletą jest szybkie, wydajne ponowne wykorzystanie kodu w innych projektach (Prototyp, Lewiatan itp.).
A jeśli jesteś programistą motywów, który lubi określoną funkcję Hybrid, ale nie cały motyw, zaletą jest szybkie, wydajne ponowne użycie kodu w projekcie niehybrydowym (zakładając, że jest to również GPL).