php spl自动加载寄存器问题

php spl自动加载寄存器问题,php,Php,这些代码是从>,我想他们错过了一些行,有 $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE; 但是没有预分割 我也弄不清那条线 $file = strtolower(str_replace("\\", DIRECTORY_SEPARATOR, trim($class, "\\"))).".php"; 它首先修剪了双斜杠,然后尝试用目录分隔符替换双斜杠,如何 在什么情况下,它在类名中会有双反斜杠 代码: =------ 在PHP中,

这些代码是从>,我想他们错过了一些行,有

$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE;
但是没有预分割

我也弄不清那条线

$file = strtolower(str_replace("\\", DIRECTORY_SEPARATOR, trim($class, "\\"))).".php";
它首先修剪了双斜杠,然后尝试用目录分隔符替换双斜杠,如何

在什么情况下,它在类名中会有双反斜杠

代码:

=------


在PHP中,名称空间用反斜杠分隔,如图所示:

$c=new\my\name\MyClass;//请参见“全局空间”部分

当您看到模式使用了两个反斜杠时,这是因为反斜杠本身具有特殊含义,即作为转义字符,正如您在中再次看到的那样

特别是,如果要匹配反斜杠,可以写“\\”


因此,为了匹配反斜杠,您需要将其转义,并以两个反斜杠结束。

带有$flags的行可能是他们以前编写类加载器时留下的,并且忘记删除

后斜杠(!)实际上不是双斜杠。反斜杠在PHP和许多其他语言中用作转义字符。例如,您可以在引号有限的字符串中写入引号,如下所示:

$someString = "Hello, so called \"World\"!";
在字符串和行的其余部分结束之前没有引号会导致分析错误

但是,要将转义字符写入字符串,必须对其本身进行转义。所以你实际上只有一个背部斜线

用目录分隔符(\在Windows上,/在Linux/Unix上)替换反斜杠是一种方便的方法,它可以以一种非常类似于Java包的方式组织代码

PHP中的反斜杠表示名称空间,因此您的类可能类似于:

\jacob\someproject\SomeClass
进行替换,然后(在Linux上)可以将其映射到相对路径:

jacob/someproject/someclass.php
就我个人而言,我会删除strtolower,这样您就可以在文件名中保留camel大小写:

jacob\someproject\SomeClass.php

这些是反斜杠,不是正斜杠。在第一个示例中有三个反斜杠,在第二个示例中有两个反斜杠。哪个是正确的?第一个反斜杠在任何一种情况下都是一个。我纠正了拼写错误。谢谢,这些代码是否遗漏了preg_split?你这是什么意思?另外,
$flags
变量未使用。是的,我想知道为什么不使用$flags。PREG_SPLIT_NO_EMPTY用于PREG_SPLIT,因此我认为代码未命中PREG_SPLIT。
jacob\someproject\SomeClass.php