![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
Witam, pisząc własny skrypt szkolę się z używania namespace i use, ale dostaje błędy że nie można znaleźć pliku... nie wiem jak z tego korzystać, czy mógłby ktoś to w prosty sposób opisać?
mam folder global i posiadam tam wszystkie klasy i kontrolery, ale nie wiem jak w global.php który nie jest klasą zaincludować te pliki przy użyciu use.. w root jaki powinien być namespace ? nie rozumiem tego... mam wielkie braki w programowaniu, które próbuje nadrobić, ale mi nie wychodzi ![]() -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Najszybciej i najprościej jest wykorzystać composer i autoloader: https://thewebtier.com/php/psr4-autoloading...using-composer/
a jeśli chcesz to PHPowo zrobić, to musisz trzymać się PSR4: https://github.com/php-fig/fig-standards/bl...der-examples.md |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
a jakie są zalety zastosowania tego, bo w ogóle nie orientuje się w temacie... Tymczasowo próbuję tworzyć modele... tak samo nie potrafię zrozumieć czym się różni implementacja od expandsa oraz co dają abstrakcje w klasach... Mam duże braki w programowaniu i to jest smutne
![]() -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie namespace'y dają mocne uproszczenie i ułożenie struktury plików i logiki w projekcie. Dużo wygodniej się tworzy projekt używając namespace i use niż zabawy z include (każdy wie czym to się zazwyczaj kończyło
![]() Jeśli chcesz nauczyć się podstaw używania takich rzeczy, to najlepiej zacząć sobie jakiś kurs PHP z frameworkiem typu symfony czy laravel (ważne żeby był nowy i trzymal się PSR), nie ma co się smucić brakami, po to powstało tyle kursów programowania żeby można było się wszystkiego nauczyć ![]() http://www.php.pl/Wortal/Artykuly/PHP/Pods...poczatkujacych5 http://www.php.pl/Wortal/Artykuly/PHP/Pods...-poczatkujacych http://www.php.pl/Wortal/Artykuly/PHP/Pods...zestrzenie-nazw Może nie są to jakieś świeże artykuły ale może nieco wyjaśnią koncepcje. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
Dobrze, to powiem inaczej
mam plik a i w nim
oraz klase B gdzie potrzebuje uzyc połączenia z mysql z klasy A ale jeżęli próbuje dodać klase b do klasy a to nie widzi połączenia.. nie wiem czy implementować klasę czy co z nią zrobić... nie rozumiem tego nie rozumiem jak to połączyć funkcja jednej jest potrzebna w konstrukcji drugiej i tak samo jest na odwrót ? -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o bazy to chyba singleton najczęściej jest używany, tutaj jakiś przykład: https://phpenthusiast.com/blog/the-singleto...-pattern-in-php.
Konkretny kod wrzucaj tutaj: https://onecompiler.com/php - będzie łatwiej bo kurde nie ogarniam tego ostatniego przykładu... może wystarczy w klasie B wstrzyknąć właśnie to połączenie mysql? (__construct($mysql)) - brakuje tutaj typowania ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
już tłumaczę o co mi chodzi. Mam klasę Engine gdzie jest wszystko ładowane między innymi połączenie z bazą danych oraz mam klasę Configuration która pobiera konfiguracje:
Potrzebuje pobrać konfigurację z bazy danych w konstrukcji Engine, ale bez konstrukcji Engine klasa Configuration nie ma danych o mysql bo znajduje się ona w Engine i teraz nie wiem jak to ze sobą połączyć... czy jest nawet taka możliwość -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
powiedz czym jest Engine - jest to silnik bazy danych czy taki Core systemu? Rozumiem, że klasa Configuration to obsługa jakieś tabeli bazy danych niż config systemowy? Jeśli chcesz mieć dostęp z każdego miejsca do konfiguracji to dodajesz do klasy Engine set/getConfiguration i po prostu wrzucasz to gdzieś w kernelu lub robisz jakiś singleton który będzie miał dostęp zawartości w każdym miejscu. Jak lepiej to opiszesz to zrobię jakiś przykładowy kod ![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Możesz także wykorzystać Dependancy Injection - https://designpatternsphp.readthedocs.io/pl...ion/README.html - akurat przykład powiązany mniej więcej z tym co chcesz zrobić
![]() + https://php-di.org/doc/getting-started.html - po przejrzeniu tego wydaje mi się że załapiesz o co chodzi, i jeszcze jedno: https://symfonycasts.com/screencast/depende...injection/intro Tyle że jak widzisz, wymaga to poznania autoloadera + composera o których pisałem wyżej Ten post edytował ohm 9.04.2022, 18:38:27 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
Engine to klasa silnika która zawiera połączenie z bazą danych, system szablonów i takie tam elementy.
Klasa Configuration to obsługa konfigu z bazy danych... tak się składa że w pliku config mam tylko połączenie z bazą danych, a reszta jest pobierana z niej w momencie połączenia... Problem polegał na tym ze w Engine trzeba było załadować konfigurację, a w konfiguracji silnik do połączenia się z bazą danych ![]() przykład
i zrezygnować z global $engine -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 1 Dołączył: 22.04.2022 Ostrzeżenie: (0%) ![]() ![]() |
Pierwszy wpis zawiera błędną tezę, że przestrzenie nazw i autoloading to to samo. To są odrębne mechanizmy.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 2.05.2025 - 04:22 |