我正在创建我的第一个(基本)php应用程序,并希望按照我的意愿启动文件路径和全局-这对我来说是全新的。我现在已经工作了,但如果有更有效的方法(用于未来验证/扩展)
我有一个简单的文件结构如下;
- css
-- bootstrap.css
- lib
-- display.php
- template
-- header.php
-- footer.php
- admin
-- login.php
- globals.php
- index.php
我想在每一页上都包含我的css(bootstrap.css
)。我在我的global.php
中声明了一个全局,如下所示;
<?php define('URL', 'http://localhost/myLocalSite'); ?>
在我的display.php
中,我包含了css;
<link href="<?php echo URL ?>css/styles.css" rel="stylesheet">
<link href="<?php echo URL ?>css/bootstrap.min.css" rel="stylesheet">
我通过使用以下内容将这些内容包含在我的index.php
中;
<?php include('globals.php') ?>
<?php include('template/header.php') ?>
<?php include('lib/display.php') ?>
我通过使用以下内容(而不是子文件夹位置)将这些内容包含在我的login.php
中;
<?php include('../globals.php') ?>
<?php include('../template/header.php') ?>
<?php include('../lib/display.php') ?>
无论何时在子目录中的文件中工作(如上面的login.php
),我是否总是需要包括../
才能包括文件,或者有更好的方法吗?
就像我说的那样,它是有效的,而且我是新手,所以我很感激你的建议。
您可以将index.php作为您的路由器,然后向其重写请求。
然后您可以在索引文件中声明一个常量,并从中加载其他文件
define('ROOT', dirname(__FILE__));
然后你可以把文件包括在任何地方,比如这个
require(ROOT.'/globals.php');
require(ROOT.'/template/header.php');
require(ROOT.'/lib/display.php');
仅适用于路由器示例:.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
然后你可以在index.php中做任何事情,例如:
<?php
$uri = $_SERVER["REQUEST_URI"];
require "templates/header.php";
switch ($uri) {
case "/":
include "views/index.php";
break;
case "/login":
include "admin/login.php";
break;
case "/something":
include "views/something.php";
break;
default:
include "views/404.php";
header("HTTP/1.0 404 Not Found");
break;
}
require "template/footer.php";
未来改进:
您可以通过某种方式将其自动化,不为每个案例创建下一个案例文件
一些关于php路由的教程,但出于安全原因请注意-不包括机密文件
相反,如果你想删除PHP处理逻辑,我建议在你的HTML <head>
部分中使用HTML <base>
标签,你可以在这里看到示例用法
<base href="http://www.yoursite.com/" target="_blank">
然后你必须更改下面的行
<link href="<?php echo URL ?>css/styles.css" rel="stylesheet">
<link href="<?php echo URL ?>css/bootstrap.min.css" rel="stylesheet">
至
<link href="css/styles.css" rel="stylesheet">
<link href="css/bootstrap.min.css" rel="stylesheet">
这将消除PHP处理部分