![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Witam,
posiadam taki autoloader:
Na poziomie całego projektu YYY (Source files) działa wyśmienicie lecz za chiny nie mogę dostać się do plików, które dodam poprzez PHP INCLUDE PATH (properties projektu YYY). ... Stworzyłem nowy projekt XXX z taką strukturą: - Source files (domyślnie) -- package --- log/Logs.php -> namespace package\log; --- Connect.php -> namespace package; --- Validation.php -> namespace package; Próbuję zrobić: use package\log\Logs; Logs::error('message'); Lecz otrzymuję błąd, że nie znajduje pliku logs.php... Domyślam się, że problem leży po stronie samego autoloadera, ale jak to zmienić? Dodam jeszcze, że sam autoloader leży w YYY/Source files/src/cms/autoloader.php, a ładowany jest w miejscu YYY/Source files/index.php |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
dla mnie jest jakiś błąd w założeniu
jeżeli -> log/Logs.php to pełna ścieżka do pliku i Logs jest nazwą klasy to autoloader powinien - sprawdzić czy plik istnieje pod podaną ścieżka (niezależnie od zagnieżdżenia) - dołączyć kod klasy czyli autoloader powinien mieć info o pełnej ścieżce do pliku Ten post edytował kayman 2.04.2013, 02:36:03 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
No tak, ale weź pod uwagę to, że Logs.php nie leży w całym katalogu Source files tylko ja to includuje w properties podając mu ścieżkę do projektu z package...
Więc w ostateczności powinno chyba to inaczej wyglądać. Dlatego pytam jak to dobrze zrobić żeby includowany projekt współpracował z projektem, który go includuje... Najlepiej jakiś przykład i wtedy zobaczę co jest nie tak. Albo nawet jak bez autoloadera z Source files dostać się do Include path i tamtych plików? Żeby to mimo wszystko jakoś automatycznie stamtąd pobierał. Dodam, że pracuję lokalnie z wamp serverem. Ten post edytował Szymciosek 2.04.2013, 12:32:21 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
twój autoloader obecnie szuka pliku w bieżącym folderze (index.php) bo z zewnątrz nie dostaje info w którym folderze ma szukac
dlatego pliki co są w folderze z index.php są includowane a reszta nie będzie znaleziona musisz jakoś przemycić info o ścieżce |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Co jest trochę bez sensu takie "przemycenie", bo za każdym razem, gdy zmienię położenie projektu, który chcę includować (tym samym na serwerze itd) ścieżka będzie inna.
Wg. mnie to powinno jakoś lepiej być zorganizowane chyba... ale nie wiem jak. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
przecież ciebie interesuje ścieżka w stosunku do folderu zawierającego index.php to jak będzie inna
poza tym ścieżkę można przemycić na 1000 sposobów nawet w nazwie klasy mojaklasa_com -> com/ mojaklasa_mod -> mod/ mojaklasa_log -> log/ mojaklasa -> folder z index.php do tego explode i swith i śmiga i jest w miarę czytelne -> tak myślę ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Albo ja nadal nie rozumiesz albo Ty myślisz, że wszystkie foldery będę miał w tym samym folderze lub podfolderach obok index.php, który ładuje autoloader.
Fizycznie pliki na dysku są rozmieszczone tak: Projekt CMS: F:\WORK\cms\ -> tutaj index.php + inne foldery Projekt XX: F:\WORK\xx -> tutaj jest package/log/Logs.php, package/Validation.php, package/Connect.php Teraz w projekcie CMS ustawiam w properties > PHP Include path do projektu XX, więc wygląda to tak: https://dl.dropbox.com/u/21239599/1-1.JPG I teraz jak z index.php widocznego na załączonym screenie dostać się do MainController używając tylko tego?
Tutaj ścieżka wg Twojego przekazanie MainController - powinna być tam, gdzie jest index.php, a tak nie jest... Ten post edytował Szymciosek 2.04.2013, 15:52:45 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
faktycznie nie zrozumieliśmy się
popatrzyłem tu -> http://www.php.net/manual/en/language.namespaces.php i wcale nie jestem pewien czy taka deklaracja ścieżek będzie ok (może php.ini?) a nawet jeżeli struktura będzie mało czytelna ja bym przeniósł te kontrolery do projektu i nie bawił się w takie rozwiązania |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Niby można kombinować z php.ini itd itp, ale wtedy każda zmiana ścieżki tamtego projektu = zmiana w php.ini i tak samo jest zawsze... może kiedyś jakoś do tego lepiej dojdę, ale teraz chyba przerzucę ten folder package do projektu po prostu.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
a takie coś
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 22:54 |