symfony2 registerNamespaces中'\'和'\\'有什么区别?

时间:2012-08-13 21:48:55

标签: php symfony

这两个代码段之间有什么区别。第一个是\,第二个是\\

第一个:

<?php
// File: app/autoload.php
$loader->registerNamespaces(array(
    'Knp\\Component'      => __DIR__.'/../vendor/knp-components/src',
    'Knp\\Bundle'         => __DIR__.'/../vendor/bundles',
    // ...
));

第二个:

<?php
// File: app/autoload.php
$loader->registerNamespaces(array(
    'Knp\Component'      => __DIR__.'/../vendor/knp-components/src',
    'Knp\Bundle'         => __DIR__.'/../vendor/bundles',
    // ...
));

它们是不同的还是它们的工作方式相同?

1 个答案:

答案 0 :(得分:5)

反斜杠在双引号字符串中具有特殊含义:它用于转义various characters(例如\n\r)。

在单引号字符串中,反斜杠用于转义文字引号(例如echo 'I\'m';)和反斜杠本身。

最好在命名空间字符串中使用双反斜杠,以防止因字符转义而导致的任何可能的错误。除此之外,它们是一样的:

// outputs: Foo\Bar\Baz
echo 'Foo\Bar\Baz';

// outputs: Foo\Bar\Baz
echo 'Foo\\Bar\\Baz';

// The autoloader would not be able to find the correct file
// outputs: Foo
//          ot    hat
echo "Foo\not\that";