3

これら 2 つのコード スニペットの違いは何ですか。1つ目は\ 、2つ目は\\.

最初の1つ:

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

そして2つ目:

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

それらは異なっていますか、それとも同じように機能しますか?

4

1 に答える 1

5

二重引用符で囲まれた文字列では、バックスラッシュには特別な意味があります。さまざまな文字( や など\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";
于 2012-08-14T00:11:41.970 に答える