Я думаю, что это может быть глупым вопросом, но я вполне смущен, должен ли я выйти из обратной косой черты в PHP.
echo 'Application\Models\User'; prints Application\Models\User
echo 'Application\\Models\\User'; same output
echo 'Application\Model\'User'; gives Application\Model'User
Таким образом, это - символ ESC, не были должны, я должен выйти из него (\
) если я хочу обратиться к Application\Models\User
?
В строках в одинарных кавычках распознаются только escape-последовательности \\
и \ '
; любое другое вхождение \
интерпретируется как простой символ.
Так как \ M
и \ U
не являются допустимыми escape-последовательностями, они интерпретируются как есть.
В строках с одинарными кавычками экранировать обратную косую черту необязательно. единственное исключение - когда он перед одинарной кавычкой или обратной косой чертой (потому что \ '
и \\
- escape-последовательности).
Это обычное дело при написании регулярных выражений, поскольку они обычно содержат обратную косую черту. preg_replace ('/ \ w \ b /', '', $ str)
легче читать, чем / \\ w \\ b /
.
Поскольку ваш последний пример содержит цитату ( '
), вам нужно экранировать такие строки с помощью функции addlashes
или просто добавив косую черту самостоятельно перед этим следующим образом:
'Application\Model\\'User'
Вы найдете полное объяснение здесь: http://nl.php.net/manual/en/language.types.string.php
Я думаю, это зависит от контекста, но это хорошая идея - экранировать обратные слеши, если использовать их в путях к файлам.
Другая хорошая идея - присвоить разделителю каталогов константу, что я уже видел в различных приложениях, и использовать ее следующим образом:
<?php
define('DIRECTORY_SEPARATOR', '\\');
echo 'Application'.DIRECTORY_SEPARATOR . 'Models' . DIRECTORY_SEPARATOR . 'User';
?>
Если вы хотите сэкономить место и набрать текст, другие используют DS
для имени константы.
<?php
define('DS', '\\');
echo 'Application'.DS.'Models'.DS.'User';
?>
Это сохраняет переносимость приложения при переходе из среды Windows в среду *nix, так как вы можете просто изменить константу-разделитель каталогов на прямую косую черту.