На 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'

Ответ 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&#92;Models&#92;User';

Он напечатает:

Применение\Models\User