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