Как автоматически включить файлы с php не ООП? - PullRequest
1 голос
/ 05 декабря 2011

У меня есть разные моды, такие как пользователи, статистика и т. Д. Если я нажимаю на пользователей, я получаю информацию о пользователях, если я нажимаю на статистику, я получаю статистику пользователей и так далее. Но я хочу сделать это автоматически с помощью php (не OOP) - автоматически включать и вызывать файлы (например, users.php, statistics.php и другие) из папки mods . Я знаю, что PHP ООП имеет функцию класса автозагрузки. Но я не знаю PHP объектно-ориентированного. Как я могу сделать это с PHP без ООП? Я хочу, чтобы ссылки были такими:

<a href='index.php?mod=users'>User list</a> <a href='index.php?mod=statistics'>Statistics</a>

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011
if (isset($_GET["mod"]) && file_exists("mods/" . preg_replace("/[^\w\d]+/", "", $_GET["mod"]) . ".php")) {
    include "mods/" . preg_replace("/[^\w\d]+/", "", $_GET["mod"]) . ".php"; // or: require("mods/" . preg_replace("/[^\w\d]+/", "", $_GET["mod"]) . ".php");
}
0 голосов
/ 05 декабря 2011

Используйте switch / case или какую-либо систему санации модов.

// BASE_PATH is some previously defined application path constant

// fetch $mod from $_GET, and if set strtolower() it

switch($mod){
    case 'user':
    case 'admin':
    case 'statistics':
        $path = realpath(BASE_PATH . "/mods/{$mod}.php");
        if(false === $path || !is_file($path)){
            // error, 404?
        }
        require $path;
        break;
    default:
        // invalid mod, 404?
        break;
}

// and so forth
...