Код (Text): self::$ROOT = str_replace(self::$FOLDER . '@@', '', self::$PATH . '@@'); Собственно, вопрос: что за @@ ?
Your, спасибо. Из вашего ответа я понял, что это не имеет отношение к каким-нибудь волшебным/стандартным/документированным штукам.
Все очень просто. Если self::$PATH = '/data/templates', а self::$FOLDER = '/data/temp', то замена без собак дала бы 'lates', а с собаками - '/data/templates@@'. Короче, смысл в том, что если в конце PATH находится FOLDER, ее оттуда удаляют
1. Код (Text): $FOLDER = 'temp' $PATH = '/data/templates'; $ROOT = str_replace($FOLDER , '', $PATH); // str_replace('temp', '', '/data/templates'); echo $ROOT; // /data/lates 2. Код (Text): $FOLDER = 'temp' $PATH = '/data/templates'; $ROOT = str_replace($FOLDER . '@@' , '', $PATH . '@@'); // str_replace('temp@@', '', '/data/templates@@'); echo $ROOT; // /data/templates@@ А собак в получившемся пути куда девать?
согласен. такая простая задача и такое странное решение. все же просто. вот есть путь $PATH = '/data/templates'; на что он указывает? это путь до каталога или до файла? ) чтобы избежать этой двусмысленности, нужно работать с путями каталогов корректно, а именно - добавлять в конец всегда слеш: $PATH = '/data/templates/'; а это путь до каталога или до файла? однозначно видно что до каталога. если так делать, то подобные замены можно производить без всяких собак. надо просто данные приводить сначала в корректное состояние. тогда с ними работать будет легко Код (PHP): $FOLDER = 'temp/' $PATH = '/data/templates/'; $ROOT = str_replace($FOLDER , '', $PATH); // str_replace('temp/', '', '/data/templates/'); echo $ROOT; // /data/templates/
Раз: http://goo.gl/lfnol Два: Юзать желательно не слэши, а DIRECTORY_SEPARATOR. А то потом боль начинается, когда на винде пилят проект, наткают слеши как попало, и пилят треды про "Помогите, не работает на сервере". Неопытные человечки на раз в такое вляпываются.