在将文件从 WAMP 生产环境传输到 LAMP 登台/实时环境时,我遇到了问题。
在 Yii 中,类的名称必须与它们的文件名相同,以便它们可以自动加载。
问题是,如果文件名相同但大小写不同,则它适用于 Windows,但不适用于 linux。如何强制 WAMP 在文件名到达 LAMP 服务器之前检查文件名是否区分大小写?
WAMP 与名称大小写无关。创建文件时需要注意。命名约定非常重要,因为在较大的项目中,如果您的类/文件名不一致,您可能会迷路。
还要检查您的文件传输工具,有时会有一些设置将文件重命名为小写等。
编辑:好吧,您可以使用CFileHelper::findFiles(Yii::getPathOfAlias('application'), array('fileTypes' => array('php')))
, 然后将文件名与类名进行比较。要获取类名而不包含它,请使用此答案中的以下代码片段:
$fp = fopen($file, 'r');
$class = $buffer = '';
$i = 0;
while (!$class) {
if (feof($fp)) break;
$buffer .= fread($fp, 512);
$tokens = token_get_all($buffer);
if (strpos($buffer, '{') === false) continue;
for (;$i<count($tokens);$i++) {
if ($tokens[$i][0] === T_CLASS) {
for ($j=$i+1;$j<count($tokens);$j++) {
if ($tokens[$j] === '{') {
$class = $tokens[$i+2][1];
}
}
}
}
}
旁注:为避免错误,请使用像Eclipse或NetBeans这样的体面的 IDE ,并使用new PHP Class
而不是new PHP File
选项。