Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Automatyczny including
blackstone
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


Zastanawiam się ( na razie z czystej ciekawości/chęci rozwoju , ale może być to przydatne praktycznie ) , jak obejść w aplikacji ( pisanej w czystym php, bez frameworka ) includowanie plików. Posłuże się przykładem z ( na razie jedynego praktycznie opanowanego (IMG:style_emoticons/default/smile.gif) ) frameworka codeigniter. Jest tam plik index.php który ( o ile dobrze zrozumiałem dokumentację) steruje zasobami, i gdy chce jakiś zasób odpalić np w kontrolerze aplikacji mogę go odpalić od razu albo za pomocą klasy load ( która ładuje inne klasy nieładujące się automatycznie ) . Wystarczy tylko że klasa kontrolera dziedziczy po klasie systemowego kontrolera ( ale nigdzie nie ma w pliku ani jednego include() ). Zastanawia mnie co zrobić ( nie chodzi mi o dokładny przepis ale o to zeby zrozumieć >>>zasadę/mechanizm<< działania takiego rozwiązania ) aby móc samemu otrzymać taki efekt. Czyli przykładowo teraz jeśli w pliku a.php chce odpalić jakąś funkcje/klasę pliku b.php to w tym pierwszym po prostu robię include() do tego drugiego. A chciałbym otrzymać efekt taki jak we frameworku, czyli że nie muszę includować ( za pomocą include() ) b.php do a.php tylko że np pewne klasy/funkcje załądują się automatycznie albo i będzie jedna klasa która łąduje inne ( co generalnie ż wiem jak zrobić , ale i tak klasa load musi się załadować z automatu, więc powracamy do punktu wyjścia (IMG:style_emoticons/default/smile.gif) ). Tak, jak pisałem wcześniej nie chodzi o dokładny przepis , ale o to żeby zrozumieć zasadę działania. Z góry dzięki za odpowiedzi (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


http://www.php-fig.org/psr/psr-4/
https://getcomposer.org/doc/00-intro.md
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Ja rzucę jeszcze link:

http://php.net/manual/en/language.oop5.autoload.php

Przykład z manuala
  1. <?php
  2. spl_autoload_register(function ($class_name) {
  3. include $class_name . '.php';
  4. });
  5.  
  6. $obj = new MyClass1();
  7. $obj2 = new MyClass2();
  8. ?>
Go to the top of the page
+Quote Post
blackstone
post
Post #4





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedzi, jak przydatne ale to od innej strony. Żeby uzyskać ten efekt wystarczy ze jest jeden plik scalający wszystko w całość.

Przykłado plik index php includuje pliki one.php i two.php. Aby odpalić jakąś funkcję/klasę pliku two.php w pliku one.php ( a dokładnie w jego funkcji/klasie ) wystarczy odpalać one.php z poziomu pliku scalajacego ( czyli tutaj przyładowo index). Nie trzeba żadnego includingu ( po za plikiem scalającym ). Ale i tak odpowiedzi w temacie, i cenne więc klikam na "pomógł".
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Uzywanie composera jest mega wygodne bo nie musisz dbać o pliki. Wystarczy podać path, zrobić update i gotowe. Dołączasz 1 plik do całego projektu a on sam dba żebyś dostał to co chcesz.

PS. Do małych projektów też jest dobry.

Ten post edytował Pyton_000 4.10.2017, 07:21:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 02:05