将文件从WAMP生产环境传输到LAMP暂存/实时环境时,我遇到了问题。
在Yii中,类的名称必须与文件名相同,以便可以自动加载。
问题是,如果文件名相同但具有不同的大小写,那么它适用于Windows但不适用于Linux。如何强制WAMP在到达LAMP服务器之前检查文件名中的区分大小写?
答案 0 :(得分:0)
WAMP与姓名案件无关。 创建文件时需要注意。 命名约定非常重要,因为在较大的项目中,如果类/文件名不一致,则可能会丢失。
同时检查文件传输工具,有时会有一些设置将文件重命名为小写等。
编辑:您可以使用CFileHelper::findFiles(Yii::getPathOfAlias('application'), array('fileTypes' => array('php')))
,然后将文件名与类名进行比较。要在不包含类名的情况下获取类名,请使用this answer中的以下代码段:
$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
选项。