阿里百秀项目第二弹:准备工作

1.数据库设计

在这里插入图片描述
选项表(options)
用于记录网站的一些配置属性信息,如:站点标题,站点描述等

用户表(users)
用于记录用户信息

文章表(posts)
用于记录文章信息

分类表(categories)
用于记录文章分类信息

评论表(comments)
用于记录文章评论信息

2.基础结构搭建

项目最基本的分为两个大块,前台(对大众开放)和后台(仅对管理员开放)。

我们采用更为常见的方案:让后台作为一个子目录出现。这样的话,大体结构就是:

前台访问地址:https://www.wedn.net/
后台访问地址:https://www.wedn.net/admin/

2.1基本的目录结构
这个表可以在cmd中用tree命令行找到

在这里插入图片描述

基本原则:
先明确一共有多少个页面
一个页面就对应一个 php 文件去处理

2.2整合静态资源文件
静态文件 vs. 动态文件
静态文件指的就是服务器不会经过任何处理就返回给客户端浏览器的文件,比如:图片、样式表、字体文件等
动态文件指的就是服务器会对请求的文件进行处理,并将处理后的结果返回给客户端浏览器的文件,比如:PHP 文件、ASP 文件、JSP 文件

具体操作
由于 Apache / Nginx 这一类 Web Server 本身可以处理静态文件请求,所以不需要 PHP 处理静态文件请求。只需要将静态资源放到网站目录中,即可访问
在这里插入图片描述
注意:
static 目录中只允许出现静态文件。
assets 目录中放置网页中所需的资源文件。
uploads 目录中放置网站运营过程中上传的文件,如果担心文件过多(会使得加载变慢),可以按年归档(一年一个文件夹)。

2.3项目配置文件
1.写配置文件
由于在接下来的开发过程中,肯定又一部分公共的成员,例如数据库名称,数据库主机,数据库用户名密码等,这些数据应该放到公共的地方,抽象成一个配置文件 config.php 放到项目根目录下。

/*
项目中的配置信息
*/
/*数据库主机*/ 
define('DB_HOST','localhost');
/*数据库用户名*/ 
define('DB_USER','root');
/*数据库密码*/ 
define('DB_PASS','');
/*数据库名字*/ 
define('DB_NAME','baixiu-dev');
/*
注意:
这种只有服务端代码的PHP文件应该去除结尾处的?>,防止输出内容
使页面中出现没必要的空行
*/

2.载入配置文件
在需要的时候可以通过 require 载入:
载入脚本的几种方式对比

require
require_once
include
include_once

共同点:
都可以在当前 PHP 脚本文件执行时载入另外一个 PHP 脚本文件。
require 和 include 不同点:
当载入的脚本文件不存在时,require 会报一个致命错误(结束程序执行),而 include 不会
有 once 后缀的特点:
判断当前载入的脚本文件是否已经载入过,如果载入了就不在执行

因此:在载入 config.php 时使用 require_once更合适

3.显示 PHP 错误信息
当执行 PHP 文件发生错误时,如果在页面上不显示错误信息,只是提示 500 Internal Server Error 错误,应该是 PHP 配置的问题,解决方案就是:找到 php.ini 配置文件中 display_errors 选项,将值设置为 On

; Production Value: Off
; http://php.net/display-errors
display_errors = On       //设为On

3.项目架构总结

架构的目的就是搭建一个基本的架子或者说是制定一个基础的约束,让所有的开发人员基于这一个约束基础之上展开开发工作。

有利于后期维护(不至于写一段时间过后大家都不认识这个项目,找一个文件,找一个功能找半天)

例如 venders 目录:盛放所有下载的安装包,不区分css文件和js文件

4.开始编码

对于网站功能开发人员来说,他们在展开工作之前就已经完成了静态页面的制作,接下来就是具体开发每一个业务功能。

先把每一个静态页直接转换成一个对应的 PHP 文件,调整页面中的资源路径,然后在此静态页面可以访问的基础之上实现各个功能。

整合全部静态页面
1.将静态页面全部拷贝到 admin 目录中。
2.将文件扩展名由 .html 改为 .php,页面中的 a 链接也需要调整。
技巧:通过cmd中的命令行改后缀

G:\baixiu-dev\admin>ren *.html *.php

3.调整页面文件中的静态资源路径,将原本的相对路径调整为绝对路径
技巧:vscode中使用批量替换

绝对路径 vs 相对路径(重点掌握)
1.相对路径:指以当前文件所处目录而言文件的位置
2.绝对路径:指对站点的根目录而言某文件的位置
3.. 代表目前所在的目录 ..代表上一层目录 /代表根目录

选择绝对路径
1.不会跟随当前页面的访问地址变化而变化
2.更简单明了,不容易出错,不用一层一层的找

2.抽离公共部分
由于每一个页面中都有一部分代码(侧边栏)是相同的,分散到各个文件中,不便于维护,所以应该抽象到一个公共的文件中。于是我们在 admin 目录中创建一个 inc(includes 的简称)子目录,在这个目录里创建一个 sidebar.php 和navbar.php文件,用于抽象公共的侧边栏 <div class="aside"> ... </div>,然后在每一个需要这个模块的页面中通过 include 载入。

侧边栏的高亮
由于侧边栏在不同页面时,active class name 出现的位置不尽相同,所以我们需要区分当前 sidebar.php 文件是在哪个页面中载入的,从而明确焦点状态。
确定 sidebar.php被哪个文件载入了:
1.通过查看 include 函数的文档发现:我们可以在各个页面中定义一个标识变量$current_page,然后在 sidebar.php 中通过这个标识变量区别不同页面的载入
2.php中提供了一种获得当前页面的方法:$_SERVER['PHP_SELF']可以取代$current_page

二级侧边栏的高亮问题
1.建立一个数组包含这个侧边栏子目录下所有页面的变量

<?php $menu_posts=array ('posts','post-add','categories')?>

2.判断一级侧边栏的高亮:打开任意二级时均高亮

<li 
<?php echo in_array($current_page,$menu_posts) ? 'class="active"' : '' ?>
 >

3.一次侧边栏的打开状态:箭头

 <ul id="menu-posts" class="collapse 
 <?php echo in_array($current_page,$menu_posts) ? 'in' : '' ?>"
	 >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值