.htaccess file: добавить следующие строки:
Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
https://alexcican.com/post/how-to-remove-php-html-htm-extensions-with -htaccess /
Теперь вам нужно будет проверить условие AllowOverride в файле apache2.log: установить параметры AllowOverRide Все в корневом каталоге вашего веб-сайта:
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Если вы попытаетесь получить доступ к своей веб-странице без расширения .php, вы можете выполнить следующую ошибку в файле apache error.log: /var/www/html/web/.htaccess: Неверная команда 'RewriteEngine', возможно, с ошибкой или определенной с помощью модуля, не включенного в конфигурацию сервера
. Чтобы исправить это: у вас не установлен модуль mod_rewrite. Чтобы установить его: выполните следующую команду: ln -s / etc / apache2 / mods-available /rewrite.load /etc/apache2/mods-enabled/rewrite.load
Опять же, после обновления веб-страницы вы можете получить следующее Ошибка в файле error.log:
[negotiation:error] [pid 4650] [client 127.0.0.1:46461] AH00687: Negotiation: discovered file(s) matching request: /var/www/html/web/test (None could be negotiated). (I was trying to access localhost/web/test.php using the url: localhost/web/test)
Чтобы исправить это, вам нужно добавить следующие строки в apache2.conf:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .html
AddType application/x-httpd-php-source .phps
Теперь я могу получить доступ к файлу test.php, используя только имя файла: test
Одно предостережение: чрезмерное использование статический импорт может фактически сделать ваш код менее читабельным (imho), особенно если имя константы не указывает четко класс или перечисление, к которому он принадлежит. Вы также можете получить имена констант из разных классов / перечислений, которые звучат одинаково или даже имеют одинаковое имя.
Так что вы заставляете читателя надеяться, что его IDE сообщит ему класс (например, с помощью инструмента совет) или они должны перейти к нему, чтобы узнать, что это такое. Распечатки и фрагменты кода становятся гораздо менее читабельными.
Честно говоря, я очень редко использую статический импорт по этим причинам.
Я не знаю каких-либо других автоматических рефакторингов, чтобы делать то, что вы ищете, но есть два ключевых аспекта: один - добавление импорта, а другой - удаление класса. имя из констант.
Для добавления импорта я рекомендую вставить import static application.KeyHolder. *;
после пакета в каждом файле, который их использует.
Для удаления имени класса, в eclipse выполняет поиск Java для KeyHolder. *
и ищет поле. Затем вы можете найти / заменить «KeyHolder». и заменить на "". Во избежание несоответствий убедитесь, что количество замененных элементов равно количеству совпадений для этого файла. Также убедитесь, что вы выполняете поиск вниз и начинаете после импорта.
Регулярное выражение было изобретено для решения подобных проблем! =)
вам нужно будет написать небольшой скрипт (или использовать поиск / замену регулярного выражения IDE). Единственная проблема состоит в том, что если есть много классов, которые должны быть статически импортированы, то это так же много работы. В противном случае, если это всего лишь один класс, такой как FOO.BLAH, вы можете использовать регулярное выражение, например
(\ bFOO \. (\ W +) \ b)
-> заменить на группу 2 ($ 2 или \ 2 или ваш искатель регулярных выражений захватывает замены).
вы можете попробовать это здесь: http://www.gskinner.com/RegExr/ . Выберите вкладку замены и введите $ 2.
Проблема может возникнуть, если у вас есть такие выражения:
FOO f = FOO.blah + "FOO.blah"
, так что следите за этим.
Что касается оператора импорта в верхней части файла, в eclipse есть функция автоматического импорта, которая выполняет автоимпорт в формате и работает, пока имя импорта достаточно уникально. Или, если вы не можете использовать его из-за слишком распространенного имени, вы можете просто использовать скрипт perl, чтобы выполнить регулярное выражение вместо этого и добавить статический импорт.
Если бы я столкнулся с такой проблемой, я бы, вероятно, написал небольшую программу сделать это для меня. Ruby и Python (JRuby и Jython?) Довольно хорошо подходят для этой задачи, хотя вы могли бы сделать это и на Java.
Хорошо, так что это, вероятно, займет у вас по крайней мере столько же времени, сколько и ручная работа , но, по крайней мере, вам будет весело :).
Что-то, что всплывает как решение. Я бы порекомендовал использовать простой отличный скрипт. В основном семантика связана с анализом операторов импорта и файлов, на которые они ссылаются. Некоторые основные шаги могут быть такими, как
Если у меня будет время, я попробую и опубликуйте небольшой отличный скрипт для того же.
Звучит неплохо, но насколько они станут лучше после того, как вы изменили все файлы? Возможно, вам стоит подумать только об изменении файлов, над которыми вы уже работаете, по другим причинам.
Eclipse может выполнять глобальный поиск и заменять регулярным выражением по всем файлам в проекте.
Чтобы добавить статический импорт в начало всех файлов, вы можете заменить объявление пакета само по себе плюс статический импорт.
Затем организуйте импорт по всему проекту, и все готово.
Будьте осторожны, это также может создать большой беспорядок, если вы сделаете это неправильно.
Я не знаю, подойдет ли он вам, но вы всегда можете определить эти константы в интерфейсе, и пусть все ваши классы просто реализуют этот интерфейс. Затем, используя некоторые умные RegExp, как предлагают другие, вы можете избавиться от всех Foo.
Пример:
public interface Foo {
static final String constant1 = "Some";
static final String constant2 = "Value";
//...
}
А затем
public class YourClass implements Foo {
public YourClass() {
System.out.println("Hello " + constant1);
}
}