Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Disable Namespacing
Forum PHP.pl > Forum > PHP > Object-oriented programming
MESSIAH :)
Czy jest jakiś łatwy i szybki sposób aby wyłączyć Namespace i powrócić do tradycyjnego php include?
viking
Programista tylko i wyłącznie za to odpowiada. Zmień reguły autoloadera.
MESSIAH :)
Powiedzmy że mam pewien skrypt który używa Namespace i chciałbym go użyć w moim projekcie jako include. Niestety pewnie wiąże się to z długim czasem poprawiania kodu oraz wyszukiwania funkcji oraz klas. Czy mam racje?
viking
Zależy jak wczytujesz klasy bo tylko to na znaczenie. Psr0 i 4. Zobacz choćby przykłady composera. Samo używanie to albo use na początku albo \klasy.
Comandeer
Zamiast wyłączać namespaces to raczej polecam je zrozumieć i zacząć stosować na co dzień. Nie ma sensu uciekać od używania jednego z de facto podstawowych mechanizmów języka
by_ikar
Include nie powinno się używać do ładowania klas, bo zamiast rzucać fatal error i przerwać działanie skryptu, to rzuca warning i sobie działa w najlepsze. Kolejną rzeczą jest to co napisali poprzednicy - uwstecznianie się.
Pyton_000
Panowie, kolega @MESSIAH znowu próbuje realizować swoje dziwne marzenia wink.gif

Autorze, czy Ty na prawdę jesteś masochistą i tak bardzo lubisz sobie komplikować w życiu? Dzięki NS wrzucasz sobie autoloader z Composer i masz głęboko w ... co się robi. Dołączasz 1 plik z loaderem a cała reszta działa. Jak widzę potworne autoloadery które mają psiąt reguł jak i gdzie szukać klas to człowieka krew zalewa. Nie daj jak zamiast autoloadera wszystko jest przez include.

W tych czasach powinno się ręce ucinać, a w Google banować kursy PHP z czasów PHP4 których jest 79% w sieci.
redeemer
Możesz użyć parsera PHP (napisanego w PHP) i przerobić Jakas\Klasa\W\Namespace do Jakas_Klasa_W_Namespace. Nawet w dokumentacji jest przykład takiego konwertera: Example: Converting namespaced code to pseudo namespaces
MESSIAH :)
Akurat tworzę swój własny autolader do którego chcę dołączyć skrypt obsługi błędów i który to jest napisany w Namespace. Ja natomiast nie chcę używać Namespace.
@by_ikar - namespace korzysta przecież z require smile.gif
Comandeer
Jak tworzysz swój własny autoloader, to poczytaj o PSR-4. A jak chcesz poczytać o obsłudze błędów, to AFAIR PSR-3 jest standardem loggera wink.gif

Co do "nie chcę używać ns" - masz jakiś sensowny powód czy po prostu "nie, bo nie"?
by_ikar
Cytat(MESSIAH :) @ 20.08.2015, 19:05:16 ) *
@by_ikar - namespace korzysta przecież z require smile.gif


Namespace out of box nie korzysta z niczego, jedynie zwróciłem uwagę na to co napisałeś:

Cytat
Czy jest jakiś łatwy i szybki sposób aby wyłączyć Namespace i powrócić do tradycyjnego php include?


A pisanie własnego autoloadera od razu mi przypomina ten obrazek:



Więc pytanie, po co tworzysz swój własny autoloader? Jaki to ma mieć cel?
MESSIAH :)
Cytat(Comandeer @ 20.08.2015, 18:28:10 ) *
Jak tworzysz swój własny autoloader, to poczytaj o PSR-4. A jak chcesz poczytać o obsłudze błędów, to AFAIR PSR-3 jest standardem loggera wink.gif

Co do "nie chcę używać ns" - masz jakiś sensowny powód czy po prostu "nie, bo nie"?

Po prostu chcę mieć swój własny mini loader uniwersalny.



@by_ikar A to co robi w dokumentacji Namespace:
http://www.php-fig.org/psr/psr-4/examples/
  1. if (file_exists($file)) {
  2. require $file;
  3. }


Tylko siedząc bezczynnie i korzystać z gotowych rozwiązań nie przynosi korzyści.
Comandeer
Cytat
Po prostu chcę mieć swój własny mini loader uniwersalny.

Loader uniwersalny = PSR-4. I to jest de facto wszystko, co trzeba i należy powiedzieć w temacie.

Jako programista głównie piszący w JS świętowałbym tydzień, gdyby powstał jeden spójny standard modułów dla frontu. Ty masz w PHP aż jeden standard, na który wszyscy się zgodzili, a i tak wypinasz się na niego i próbujesz tworzyć coś swojego. Po kiego grzyba? Jak chcesz napisać loader, oprzyj go na standardzie PSR-4.
Pyton_000
uniwersalny autoloader... to już jest i nazywa sie.... (tutaj werble...) COMPOSER
Damonsson
Napisałbyś swój autoloader, a nie korzystasz z gotowców leniu, pewnie nawet nie wiesz jak taki autoloader napisać, dlatego proponujesz mu COMPOSER sciana.gif
Xelah
Composer to nie autoloader. Composer używa autoloader ale nim nie jest. I może używać dowolnego. Jak sobie dla swoich potrzeb napiszesz własny, to możesz go spokojnie w composerze używac.
Comandeer
A niech se pisze - co mu szkodzi wink.gif jak chce się bawić w wymyślanie koła na nowo, niech to robi. IMO najlepszy sposób na naukę. Niech tylko nie wymyśla nowych standardów, a użyje istniejących.
Pyton_000
Oh ja nie dobry. Jak ja mogłem proponować coś dobrego, coś co działa.. Tfuu tfuuu...
Zmieniam zdanie. Piszta własne autoloadery, niech Wam się linijki kodu mnożą, niech działają.

@Damonsson dzięki za otworzenie oczu exclamation.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.