Я создал PHP-проект в Windows, и, как вы знаете, в Windows fun.php и Fun.php такие же, но не в Linux.
Q1-> Как мой проект будет запущен в Linux. Как решить эту проблему [ошибка для имени файла]?
Q2-> Мне нужно показать ошибку, если точное имя файла не существует! Как это сделать?
пример
У меня есть этот 2 PHP-файл в template.php
и render.php
Код render.php
include 'Template.php';
Я хочу получить предупреждение, поэтому я могу исправить эту проблему [которая не создает проблем в Windows, а в Linux]
Решение № 1: используйте все строчные буквы. Решение №2: Используйте один и тот же случай каждый раз. Вместо того, чтобы включать «Шаблон», когда имя файла является «шаблоном», просто включите строчный «шаблон» в первую очередь. Большинство языков программирования в любом случае чувствительны к регистру, поэтому лучше всего практиковать. Хотя имя файла может быть уникальным в этом вопросе, например, переменная в PHP должна использовать один и тот же случай, поэтому просто применяйте те же принципы к именам файлов.
Ну, если бы я был в такой ситуации, я бы написал обертку вокруг:
function warned_include($file) { if( defined( 'DEBUG_ENV' ) ) // define this somewhere else while in dev. { foreach( explode( PATH_SEPARATOR, get_include_path() ) as $path ) { // make sure the / is replaced with the OS native DIRECTORY_SEPARATOR $fullPath = str_replace($path .DIRECTORY_SEPARATOR.$file, '/', DIRECTORY_SEPARATOR); if( is_file( $fullPath ) ) { $spl = new SplFileInfo( $fullPath ); if( $spl->getPathname() != $fullPath ) { echo 'case sensitivity mismatch for ' . $spl->getPathname(); } break; } } } include $file; }
У меня не было возможности проверить это, но SplFileInfo получает имя пути из ОС, а это значит, что в Windows это должно иметь правильную чувствительность к регистру.
У вас есть «ярлык» в окнах, где вы вызываете Template
файла, пока он фактически является template
. Если вы просто перейдете кодовым кодом и не допустите этого, все будет в порядке?
Если по какой-то причине вы этого не хотите, вы всегда можете использовать автозагрузчик для классов. Каждый класс, который вызывается, загрузит этот класс, если он не сможет найти себя. это, очевидно, будет не идеальным для ситуаций, когда вы хотите включить материал, который не находится в классах.
Может быть, вы должны заменить все включенные с требованием. Требовать, чтобы произошла фатальная ошибка, если такого файла нет (не в надлежащем случае)
Вы можете найти это полезным. – http://clarityamidstchaos.wordpress.com/2008/10/24/how-to-perform-a-case-insensitive-file_exists-lookup-in-phplinux/