Autor | Zpráva | ||
---|---|---|---|
nethor Profil |
Zdravím,
dosud jsem používal ve funkcích mkdir() a file_put_contents() pouze relativní cesty. Bez problémů. Při použití cesty z kořene serveru, s lomítkem na začátku mě ale překvapilo, že se cesta nepočítá od htdoc, ale od rootu systému, na localu ve Win typicky od C:\ . Řešení je asi upravit abs. cestu: $Path = $_SERVER['DOCUMENT_ROOT'].$Path .
Pokud chci ale pohodlně používat absolutní i relativní cesty, asi nezbývá než si napsat nenativní cfi s WorkAround: if (preg_match('~^/~i', $Path)) { // úprava absolutní cesty $Path = $_SERVER['DOCUMENT_ROOT'].$Path ; } |
||
Kcko Profil |
do index.php si dej něco jako
define('__ROOT__', __DIR__); a pak nebude problém ne?
V práci máme samozřejmě linux, svoje menší soukromý věci si dělám na WIN, funguje všude. |
||
nethor Profil |
Kcko:
To problém je, protože musím separovat cesty pro interní práci a pro veřejné odkazy. Zbytečně. Jde o to, že stejná absolutní cesta v různých použitích vede někam úplně jinam: mkdir("/folder/") ; <a href="/folder/">folder</a> mkdir("./folder/") ; <a href="./folder/">folder</a> |
||
anonym_ Profil * |
#4 · Zasláno: 17. 7. 2022, 22:52:20
Kcko:
Možná mi něco uniká, ale nač definovat tu konstantu? Rovnou muže používat __DIR__. nethor: Ano, mícháš dohromady 2 nesouvisejici věci - cesty v PHP (na serveru) a cesty v HTML. Proč by dle tebe měly byt adresy v mkdir a v odkazu stejné, resp. stejně zapsané? Kazdy z tech řádků kódu je v jiné vrstvě aplikace (typicky MVC), každou z nich píše pravděpodobně jiný člověk. V PHP použij relativní nebo absolutní s __DIR__ na začátku, v HTML relativní nebo absolutní s lomítkem na začátku. Řešis problém, který je umělý a reálně není. |
||
nethor Profil |
#5 · Zasláno: 17. 7. 2022, 23:28:53
anonym:
Konstanta by se v tomto případě hodila, protože __DIR__ obsahuje jinou hodnotu, podle umístění souboru, ve kterém je použitý. Ve třídě jsem s relativními cestami mohl používat stejnou cestu pro interní práci v PHP i pro html výstup generovaný PHP. S absolutními musím všechny cesty generovat dvojmo. To je reálný problém. Připadá mi to přes ruku, ptal jsem se, jestli neexistuje elegantnější cesta. |
||
anonym_ Profil * |
#6 · Zasláno: 17. 7. 2022, 23:37:44
nethor:
Nikoliv, hodnota z __DIR__ nemá v HTML odkazech co dělat, takové asi snad ani fungovat nebudou, ne? Základní problém je ten, ze mícháš jabka s hruškami, tedy PHP s HTML. Začal bych tam. Když už pracovat s absolutními URL, tak v PHP s __DIR__, v HTML pak s nějakou definovanou šablonovou promennou s hodnotou https://example.com .
|
||
nethor Profil |
#7 · Zasláno: 18. 7. 2022, 00:06:59
anonym:
„Nikoliv, hodnota z __DIR__ nemá v HTML odkazech co dělat, takové asi snad ani fungovat nebudou, ne?“ O tom právě mluvím. Uniká ti podstata dotazu. Nevíš? Nevíš, nevadí. |
||
anonym_ Profil * |
#8 · Zasláno: 18. 7. 2022, 07:58:26
nethor:
Pravé ze vím a snažil jsem se ti vysvětlit, ze to tak nefunguje. Stejně jako PHP nemůže vidět javascriptovou proměnnou, tak nemůžou byt tyhle 2 URL zapsané jednou proměnnou (nebo stejnou cestou). Reálně to ničemu nevadí, protože… proč by vlastně mělo? V vetsine kódů to navíc budou psát dva různí lidé, každý zvlášť, v jiném souboru a jindy, tak není důvod, aby to bylo stejné. I ty relativní adresy mohou a často budou (pokud teda nebastlis všechno dohromady) směřovat jinam. Relativně k souboru, kde ji volám, což muže byt i o několik adresářů jiné zanoreni. Pokud jsi spokojený s výsledkem te funkce v #1, asi ji klidne používej dal. Chudák ten, kdo ten projekt po tobě jednou převezme… |
||
Kcko Profil |
#9 · Zasláno: 18. 7. 2022, 09:14:50
nethor:
Na co potřebuješ relativní a absolutní? Pokud vkládáš přes PHP skript jiný soubor, tak Ti musí stačit ona konstanta nadefinovaná v indexu. Pokud to potřebuješ např. na přilinkování assetů, tj. něco na práci s .htaccessem třeba, tak si udeláš funkci nebo jinou konstantu, rozšířenou o tu základní. Moc nerozumím. anonym Jsi ve vlákně o PHP, proč do toho taháš HTML? |
||
anonym_ Profil * |
#10 · Zasláno: 18. 7. 2022, 09:29:40
Kcko:
Viz #3. |
||
Kcko Profil |
#11 · Zasláno: 18. 7. 2022, 13:15:55
anonym:
Aha, to jsem přehlédl. Sorry. Nicméně, ano, máš pravdu, v HTML resp šablonovacím souboru, by bylo vhodné, pokud to není nějak připravené dopředu používat funkci nebo proměnnou, která to řeší, obdoba $basePath z Nette. |
||
Časová prodleva: 2 roky
|
0