在上一个文章中咱们说了它的基本的一些结构,以及咱们经过修改入口文件把它移入到public文件夹下面。那么今天咱们来一块儿研究一下它的详细的目录结构,以及完善一下public文件夹里面的内容。
今天主要是两大块,第一块是完善public文件夹,第二块是目录结构的详细解读。javascript
咱们已经把index.php文件成功移植到来咱们的public文件夹下面了,那么如今咱们在这个文件夹下面建立几个文件夹用来存放咱们项目中所须要的一些静态文件。好比:图片、css样式、javascript等。按照鸟哥在文档中所说的,咱们能够建立如下这几个文件夹,它们分别是:
css : 用来存储一些咱们项目中所须要的样式文件。
img : 用来存储咱们项目中的一些图片资源,好比logo、背景图什么的。
js : 用来存储一些咱们项目中的js代码块或者第三方库,如:jquery、vuejs等。
那么咱们如今就先建立一下它们把,为咱们接下来的项目作准备:
php
这个文件夹用于存放咱们框架的配置文件,默认配置文件:application.ini。配置项能够参考鸟哥手册:www.laruence.com/manual/yaf.…css
这个文件夹的话是咱们框架中的核心,里面包含了咱们这个框架的总体架构等内容。
里面有5个文件夹以及一个.php文件,那咱们如今一个一个提及吧!html
你们看到这个别把它误认为是前端框架的那个bootstrap不过我相信都不会这么认为的。那咱们看看它是作什么的:
Bootstrap, 也叫作引导程序. 它是Yaf提供的一个全局配置的入口, 在Bootstrap中, 你能够作不少全局自定义的工做. ——鸟哥
咱们一块儿来看看鸟哥的这句话,他说bootstrap.php是一个引导程序,是yaf的一个全局的配置的一个入口,也就是说咱们能够在它里面作一些配置,好比加载咱们的.ini配置文件,加载咱们的第三方类库,如图片处理、日志处理、composer下载的类库等。咱们来先看看源码:前端
<?php
/**
* @name Bootstrap
* @author mateng
* @desc 全部在Bootstrap类中, 以_init开头的方法, 都会被Yaf调用,
* @see http://www.php.net/manual/en/class.yaf-bootstrap-abstract.php
* 这些方法, 都接受一个参数:Yaf_Dispatcher $dispatcher
* 调用的次序, 和申明的次序相同
*/
class Bootstrap extends Yaf_Bootstrap_Abstract {
public function _initConfig() {
//把配置保存起来
$arrConfig = Yaf_Application::app()->getConfig();
Yaf_Registry::set('config', $arrConfig);
}
public function _initPlugin(Yaf_Dispatcher $dispatcher) {
//注册一个插件
$objSamplePlugin = new SamplePlugin();
$dispatcher->registerPlugin($objSamplePlugin);
}
public function _initRoute(Yaf_Dispatcher $dispatcher) {
//在这里注册本身的路由协议,默认使用简单路由
}
public function _initView(Yaf_Dispatcher $dispatcher) {
//在这里注册本身的view控制器,例如smarty,firekylin
}
}复制代码
咱们看到了它里面的每一个方法都是以 _init来开头的,之因此以 _init开头主要是它们都会被yaf调用。然而这些方法都会接收一个参数:Yaf_Dispatcher $dispatcher,咱们如今来试着本身定义一个方法看看:vue
public function _initPdobase(Yaf_Dispatcher $dispatcher) {
var_dump('hello,pdo!');
exit;
}复制代码
在这里我自定义了一个Pdobase的方法,输出了一段“hello,pdo!”,这时候会输出hello,pdo!此刻说明了它被加载了:
java
你们都比较熟悉如今比较流行的web架构:MVC三层架构,那么这个controllers文件夹中存放的也就是咱们的 C ,也就是控制器,经过自定义控制器如:Index.php 就能够进行接收客户端请求,调用数据模型,基本逻辑处理,以及调用视图,最终完成客户的请求。它接收请求并决定调用哪一个模型去处理请求,而后再肯定用哪一个视图来显示返回的数据。jquery
上面说到了MVC中的 C ,那么咱们如今就来看看models文件夹是作什么的,它是存放咱们的 M 。
“模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,因为应用于模型的代码只需写一次就能够被多个视图重用,因此减小了代码的重复性。——百度百科”web
这个文件夹咱们看名字也知道,他是用来存放咱们的视图文件,这里面和其余两个文件夹不一样的是,还须要在它里面建立一个文件夹,而这个文件夹的名字要与控制器的名称一致,如咱们有个:Index.php控制器,那么在views下面咱们就要建立一个index文件夹,在这个文件夹里面咱们来建立模板文件,如:index.phtml。这里的文件名字为咱们控制器的一个方法,在后面的实战中我会详细说明。数据库
这个主要是用于存放咱们的一些本地类库的文件夹。后面咱们会使用到它,使用的时候咱们再详细说明。
这个是插件目录,用来存放一些插件。如:PDF文档的生成插件、phpmailer邮件的发送等。好了,这一篇咱们详细的说明了框架的目录结构,那么下一篇咱们就开始建立第一个控制器,让它输出“hello,world!”