Ответы пользователя по тегу PHP
  • Проектирование серверной части сайта?

    fratyr
    @fratyr
    Странные ответы, человек ведь не об этом спрашивал. Причем тут ЧПУ и фреймворки?
    Вроде как автор не горит желанием делать тотальный рефакторинг.

    Кстати у нас на работе, когда ушел один динозавр-программист, стали доступными его коды и там были файлы с условиями в тысячи строк. Как вы сами понимаете — такое невозможно привести в божеский вид, целой команде пришлось переписывать всё с нуля.

    Но именно костыль, который мы сделали изначально, дабы *причесать* немного коды, перед тем как нам дали добро всё писать с нуля заключался в:
    1. Написали небольшой раутер, который принимает GET параметры mod и do (модуль/класс и метод который вызвать), в вашем случае — файл и название функции которую вызвать.
    2. Создали список в отдельном файле в виде массива который содержит в себе ключи названия модулей, внутри каждого массив с двумя элементами — название файла или прямой путь до него и метод который вызывать по дефолту.

    т.е вам, по сути, если я правильно понял ваш код, можно создать перепись всех подгружаемых файлов которые прописаны в диком if ( ) else ( ) в примерно таком виде:

    Array( 'news' => Array( 'file' => '/functions/news.php', 'любой_другой_параметр_нужный_вам' => 'и_его_значение' ), 'users' => Array( 'file' => '/functions/users/user.php', 'abx' => 'zxc' ) );

    Убить все условия, и сделать что-то вроде:
    $module = (!empty($_GET['module']) ? $_GET['module'] : false); if ( $module ) { if ( isset($myModules[ $module ]) ) { // подгрузить файл, прочитать еще какой-то параметр, может название функции в файле и вызвать ее. exit; } } // показать что-то дефолтное если запрошенный модуль не найден?

    Я правильно понял задачу?
    Ответ написан