Я пытаюсь обновить свой веб-сайт для использования CodeIgniter 3, но начиная с CodeIgniter 3.0 все имена файлов классов (библиотек, драйверов, контроллеров и моделей) должны именоваться в стиле Ucfirst или, другими словами, они должны начинаться с заглавной буквы.
Например, если у вас есть следующий файл библиотеки:
application/libraries/mylibrary.php
...тогда вам придется переименовать его в:
application/libraries/Mylibrary.php
То же самое касается библиотек драйверов и расширений и/или переопределений собственных библиотек и основных классов CodeIgniter.
application/libraries/MY_email.php application/core/MY_log.php
Вышеуказанные файлы следует соответственно переименовать в следующие:
application/libraries/MY_Email.php application/core/MY_Log.php
Контроллеры:
application/controllers/welcome.php -> application/controllers/Welcome.php
Модели:
application/models/misc_model.php -> application/models/Misc_model.php
Как это сделать с помощью командной строки?
Спасибо ,
решение1
В Bash 4 сначала включите дополнительные параметры подстановки:
shopt -s extglob
Теперь убедитесь, что вы вызываете это только в папках, содержащих файлы PHP, которые вы хотите переименовать. Он будет рекурсивно искать .php
файлы.
for f in **/*.php; do
fn=$(basename "$f") # remove directory name
Fn=${fn^} # uppercase first letter
echo mv -- "$f" "$(dirname "$f")/$Fn" # combine both
done
Для MY_
файлов вам может потребоваться еще один запуск:
for f in **/MY_*.php; do
fn=$(basename "$f")
Fn=${fn#MY_} # remove MY_ from filename
Fn="MY_${Fn^}" # uppercase first letter and add MY_ again
echo mv -- "$f" "$(dirname "$f")/$Fn"
done
Удалите echo
из этих скриптов, чтобы выполнить переименование.
решение2
Используйте небольшую утилиту под названием mmv
. Вы можете сделать первую букву заглавной следующим образом:
mmv "[a-z]*\.*" "#u1#2.#3"
А для второго случая, который вы упомянули ( MY_log.php
), вы можете решить это следующим образом:
mmv "*_[a-z]*.php" "#1_#u2#3.php"
или:
mmv "*_[a-z]*" "#1_#u2#3"