The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 创建应用 ]
创建应用程序
DoYouHaoBaby 提供了基于 Web的工具来创建一个新的 Web 应用程序。这里我们将一直使用基于 Web 界面的工具和基于入口文件的方式来创建应用程序。
DoYouHaoBaby 吸收了ThinkPHP 利用入口文件 和 QeePHP 利用Web 图形工具来创建应用程序的优点,我们可以通过其中任意的方式来创建DoYouHaoBaby 的应用程序。
- 基于 Web界面 来创建应用程序(新手初次使用最为方便)
- 基于入口文件来创建应用程序(这个熟悉了比Web界面 更方便)
这里,我们将使用两种方式来创建应用程序,说实话,使用代码创建应用程序更强大,后面再说。
1:使用图形化工具来创建一个DoYouHaoBaby 应用程序。
上一节,我们介绍我的开发环境,我们在框架内部放置了一个图像化界面创建工具,位于 框架目录(DoYouHaoBaby)/Tools/App.php,我们通过浏览器直接访问它就行。
我们这里访问浏览器:http://localhost/doyouhaobaby/DoYouHaoBaby/Tools/App.php
我们会看到这样的界面:

#我们来创建一个基于基于虚拟主机的应用程序:
该模板适合无法修改服务器设置的虚拟主机用户,入口文件( index.php ,admin.php等)放置在应用程序根目录中。
我们创建一个为 Home(APP_NAME = Home),项目所在目录为(APP_PATH = self + '/Home'):D:\phpcondition\htdocs\doyouhaobaby 的应用程序。
创建成功后,会在D:\phpcondition\htdocs\doyouhaobaby\Home 的应用程序。
如图:

如果不出什么意外,你会看到如下消息:
- Building application Home......
- create D:\phpcondition\htdocs\doyouhaobaby/Home/Common
- create D:\phpcondition\htdocs\doyouhaobaby/Home/Common/Common.inc.php
- create D:\phpcondition\htdocs\doyouhaobaby/Home/Conf
- create D:\phpcondition\htdocs\doyouhaobaby/Home/Conf/Config.php
- ......
如图:

你会发现,在我们的 DoYouHaoBaby 旁多了一个文件夹Home,里面有一些初始化文件和目录。
如图:

创建好了后,我们访问我的项目,这里我们通过浏览器访问,http://localhost/doyouhaobaby/Home/:
- DoYouHaoBaby Framework SystemMessage
- 非常感谢使用DoYouHaoBaby Framework,系统已经为你生成了编译项目目录或者运行目录Runtime!
- 运行消息如下:
- 请点击这里刷新即可,祝你愉快!
如图:

刷新一下浏览器即可。
程序首次运行后,将会生成编译目录,初始化配置程序,刷新。
( 注意:程序运行过程会检测编译目录,不存在的话,会自动创建。如果,程序中不存在Runtime目录,且不存在~Runtime.inc.lock,那么程序会再次自动创建应用程序,所以一但创建成功了应用程序后,请不要顺便删除Runtime目录,但是可以清空它。)
同时,程序第一次运行后的时候,会进行模板编译,这需要一定时间。模板只需要编译一次,第二次就直接加载了,并不存在性能问题。可以指定过期时间,我们默认为86400(s),即一天。
然后你可以看到一个欢迎界面:
如图:

点击一下探针,可以查看当前服务器的相关信息:
http://localhost/doyouhaobaby/Home/index.php/index/checkProbe/
如图:

PHP_Info :http://localhost/doyouhaobaby/Home/index.php/index/checkprobe/act/phpinfo/
如图:

访问测试页面,这里包含了非常多的模板布局技术,可以参考一下:
http://localhost/doyouhaobaby/Home/index.php/index/demo
如图:

独立服务器部署模式与虚拟主机部署模式的项目目录只是一个入口文件的差别,并且可以相互转化。
接下来,我们创建一个基于独立服务器应用程序,把网站 程序放置到Web根目录外,入口文件放置在根目录内,加强程序的安全性。
#创建一个独立服务器的应用程序
打开浏览器,还是访问我们的Web tool工具,http://localhost/doyouhaobaby/DoYouHaoBaby/Tools/App.php
我们创建一个项目位于Web服务器 根目录(根目录为:D:\phpcondition\htdocs)外的独立服务器部署方式,项目目录为 D:\phpcondition ,项目名字为Home,入口文件的路径为:D:\phpcondition\htdocs\doyouhaobaby\index.php。
如图:

点击创建一个应用程序,生成消息如下:
- Building application Home......
- create D:\phpcondition/Home/Common
- create D:\phpcondition/Home/Common/Common.inc.php
- create D:\phpcondition/Home/Conf
- create D:\phpcondition/Home/Conf/Config.php
- create D:\phpcondition/Home/Conf/ExtendConfig
- ......
如图:

运行成功后,我们会在 D:\phpcondition\htdocs\doyouhaobaby 下面看到我们的入口文件:
如图:

我们在 D:\phpcondition 下看到一个为Home的文件夹,这是我们刚才创建项目。
如图:

最后我们访问入口文件,http://localhost/doyouhaobaby/index.php:
如图:

演示:http://localhost/doyouhaobaby/index.php/index/demo:

你看到这样子的好处了,应用程序放在Web根目录外,入口文件放置了我们的根目录里面。
两种部署方式说明:
两种部署方式,可以在后期改改入口文件就可以相互转化,所以你不用担心选择了一种部署方法,而无法转化成另一种方式。
虚拟主机与独立服务器部署只是入口文件中定义的定义的项目路径不同而已,我们在入口文件定义了项目路径,那么项目就跟入口文件分离了。于是,我们这个时候,可以把项目文件部署到Web根目录外,入口文件放置到Web根目录,这样可以大大增加网站的安全性。
当然如果我们把项目部署到Web根目录外,你可能需要将系统定义的公用目录的资源转移到相对于入口文件的位置。这个可以根据模板中的损坏的路径看出,几秒钟的事而已。
2:使用入口文件来创建应用程序
上面的方式是使用Web 图像化工具来创建应用程序,接下来我们可以通过入口来创建应用程序,这也很给力。我们通过APP_PATH 来控制入口文件和应用程序目录之间的关系。
# 创建一个虚拟主机模式(即入口在项目里面)
以这种方式来创建应用程序,你不需要指定应用程序名字和项目的路径,因为这个时候的项目目录为入口文件所在目录,项目目录路径为项目路径。
我们在 D:\phpcondition\htdocs\doyouhaobaby 下新建一个文件 Home2,这个文件夹为我们的项目文件夹,我们在下面新建一个文件index.php(当然不一定是index.php,你可以指定为其它)。
既然如此,我们这里就不创建一个index.php了,我们创建一个叫做admin.php的入口文件,并且在里面附上如上的代码。
- <?php
- /**
- * The DoYouHaoBaby PHP FrameWork - Home
- *
- * @author DoYouHaoBaby Support Team
- * @copyright Copyright (c) 2010 - 2011 http://doyouhaobaby.com All rights reserved
- * @license Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- */
- /**
- * 当前项目配置 < 用于配置系统运行环境 >
- *
- * <!-- 虚拟主机方式部署 -->
- *
- * < 如果采用虚拟主机方式来部署,即入口文件位于项目目录的根目录
- * 这种情况可以不设置APP_NAME 和APP_PATH >
- *
- * <!-- 独立服务器部署方式 -->
- *
- * < 如果是独立服务器部署方式,因为入口文件和项目不一致。
- * 这个时候,我们需要指定项目目录,以便我们利用项目中资源。
- * 同时,这个时候我们也需要指定项目目录,因为如果我们指定项目名字,
- * 那么项目就由入口文件上层目录代替,显然,这是错误的。 >
- *
- * <!-- 注意事项 -->
- *
- * < 项目名字只能有字母、数字、下划线组成 >
- * < 项目路径只能使用物理路径,因为系统很多底层数据处理,因为目录深度的原因,
- * 如果不使用物理路径,将会造成系统找不到路径。
- * 所以系统中不允许出现 ‘./test’,‘../hello/test’之类的相对路径 。
- * 另外,项目路径不云溪后面添加'/','\',这是系统一个习惯用法。
- * 所有常量定义的路径,后面都没有在添加一个斜杠后者反斜杠 >
- */
- //define('APP_NAME','Home'); //项目名字
- //define('APP_PATH',dirname(__FILE__)); //项目路径
- /** 加载框架 */
- require_once '../DoYouHaoBaby/DoYouHaoBaby.php';
- /** 实例化框架并且初始化 */
- App::RUN();
如图:

然后,我们访问入口文件,http://localhost/doyouhaobaby/Home2/admin.php。
程序初始化运行,将会创建项目结构,生成消息:
DoYouHaoBaby Framework SystemMessage
非常感谢使用DoYouHaoBaby Framework,系统已经为你生成了编译项目目录或者运行目录Runtime!
运行消息如下:
- DoYouHaoBaby Framework SystemMessage
- 非常感谢使用DoYouHaoBaby Framework,系统已经为你生成了编译项目目录或者运行目录Runtime!
- 运行消息如下:
- Building application Home2......
- create D:\phpcondition\htdocs\doyouhaobaby/Home2/Common
- create D:\phpcondition\htdocs\doyouhaobaby/Home2/Common/Common.inc.php
- create D:\phpcondition\htdocs\doyouhaobaby/Home2/Conf
- create D:\phpcondition\htdocs\doyouhaobaby/Home2/Conf/Config.php
- ......
如图:

我们再看看目录 D:\phpcondition\htdocs\doyouhaobaby\Home2 ,里面已经为我们部署好了文件。
如图:

F5刷新一下,我们将会看到,我们以前看到环境界面:
如图:

# 创建一个独立服务器部署模式(项目目录位于根目录外,入口文件在Web根目录里面。)
我们创建一个项目位于Web服务器根目录(根目录为:D:\phpcondition\htdocs)外的独立服务器部署方式,项目目录为 D:\phpcondition ,项目名字为Home2,入口文件的路径为:D:\phpcondition\htdocs\doyouhaobaby\index2.php。
我们在D:\phpcondition\htdocs\doyouhaobaby 下面创建一个index2.php 的入口文件,里面写上代码:
- <?php
- /**
- * The DoYouHaoBaby PHP FrameWork - Home2
- *
- * @author DoYouHaoBaby Support Team
- * @copyright Copyright (c) 2010 - 2011 http://doyouhaobaby.com All rights reserved
- * @license Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- */
- /**
- * 当前项目配置 < 用于配置系统运行环境 >
- *
- * <!-- 虚拟主机方式部署 -->
- *
- * < 如果采用虚拟主机方式来部署,即入口文件位于项目目录的根目录
- * 这种情况可以不设置APP_NAME 和APP_PATH >
- *
- * <!-- 独立服务器部署方式 -->
- *
- * < 如果是独立服务器部署方式,因为入口文件和项目不一致。
- * 这个时候,我们需要指定项目目录,以便我们利用项目中资源。
- * 同时,这个时候我们也需要指定项目目录,因为如果我们指定项目名字,
- * 那么项目就由入口文件上层目录代替,显然,这是错误的。 >
- *
- * <!-- 注意事项 -->
- *
- * < 项目名字只能有字母、数字、下划线组成 >
- * < 项目路径只能使用物理路径,因为系统很多底层数据处理,因为目录深度的原因,
- * 如果不使用物理路径,将会造成系统找不到路径。
- * 所以系统中不允许出现 ‘./test’,‘../hello/test’之类的相对路径 。
- * 另外,项目路径不云溪后面添加'/','\',这是系统一个习惯用法。
- * 所有常量定义的路径,后面都没有在添加一个斜杠后者反斜杠 >
- */
- define('APP_NAME','Home2'); //项目名字
- define('APP_PATH',dirname(__FILE__).'/../../Home2' ); //项目路径
- /** 加载框架 */
- require_once 'DoYouHaoBaby/DoYouHaoBaby.php';
- /** 实例化框架并且初始化 */
- App::RUN();
如图:

好了,我们访问入口文件index2.php,http://localhost/doyouhaobaby/index2.php:
生成如下的消息:
DoYouHaoBaby Framework SystemMessage
非常感谢使用DoYouHaoBaby Framework,系统已经为你生成了编译项目目录或者运行目录Runtime!
运行消息如下:
- DoYouHaoBaby Framework SystemMessage
- 非常感谢使用DoYouHaoBaby Framework,系统已经为你生成了编译项目目录或者运行目录Runtime!
- 运行消息如下:
- Building application Home2......
- create D:\phpcondition/Home2/Common
- create D:\phpcondition/Home2/Common/Common.inc.php
- create D:\phpcondition/Home2/Conf
- create D:\phpcondition/Home2/Conf/Config.php
- ......
如图:

我们在 D:\phpcondition 看到一个Home2 的项目文件夹:
如图:

我们最后也可以看到我们的欢迎界面:
如图:

#入口文件和项目分离,但不一定要部署Web根目录外,当然这个通过图形化工具无法做到
我们在D:\phpcondition\htdocs\doyouhaobaby 中新建一个文件index3.php,里面写上如下的代码:
- <?php
- /**
- * The DoYouHaoBaby PHP FrameWork - Home2
- *
- * @author DoYouHaoBaby Support Team
- * @copyright Copyright (c) 2010 - 2011 http://doyouhaobaby.com All rights reserved
- * @license Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- */
- /**
- * 当前项目配置 < 用于配置系统运行环境 >
- *
- * <!-- 虚拟主机方式部署 -->
- *
- * < 如果采用虚拟主机方式来部署,即入口文件位于项目目录的根目录
- * 这种情况可以不设置APP_NAME 和APP_PATH >
- *
- * <!-- 独立服务器部署方式 -->
- *
- * < 如果是独立服务器部署方式,因为入口文件和项目不一致。
- * 这个时候,我们需要指定项目目录,以便我们利用项目中资源。
- * 同时,这个时候我们也需要指定项目目录,因为如果我们指定项目名字,
- * 那么项目就由入口文件上层目录代替,显然,这是错误的。 >
- *
- * <!-- 注意事项 -->
- *
- * < 项目名字只能有字母、数字、下划线组成 >
- * < 项目路径只能使用物理路径,因为系统很多底层数据处理,因为目录深度的原因,
- * 如果不使用物理路径,将会造成系统找不到路径。
- * 所以系统中不允许出现 ‘./test’,‘../hello/test’之类的相对路径 。
- * 另外,项目路径不云溪后面添加'/','\',这是系统一个习惯用法。
- * 所有常量定义的路径,后面都没有在添加一个斜杠后者反斜杠 >
- */
- define('APP_NAME','Home3'); //项目名字
- define('APP_PATH',dirname(__FILE__).'/Home3' ); //项目路径
- /** 加载框架 */
- require_once 'DoYouHaoBaby/DoYouHaoBaby.php';
- /** 实例化框架并且初始化 */
- App::RUN();
如图;

通过浏览器访问:http://localhost/doyouhaobaby/index3.php,运行后的消息如下:
DoYouHaoBaby Framework SystemMessage
非常感谢使用DoYouHaoBaby Framework,系统已经为你生成了编译项目目录或者运行目录Runtime!
运行消息如下:
- DoYouHaoBaby Framework SystemMessage
- 非常感谢使用DoYouHaoBaby Framework,系统已经为你生成了编译项目目录或者运行目录Runtime!
- 运行消息如下:
- Building application Home3......
- create D:\phpcondition\htdocs\doyouhaobaby/Home3/Common
- create D:\phpcondition\htdocs\doyouhaobaby/Home3/Common/Common.inc.php
- create D:\phpcondition\htdocs\doyouhaobaby/Home3/Conf
- create D:\phpcondition\htdocs\doyouhaobaby/Home3/Conf/Config.php
- ......
如图:

我们可以看到一样的欢迎界面:
如图:

你看到了,这种部署非常好,比如我们开发一个项目,一个Admin 存放后台管理 ,Home 存放前台访问。
我们可以建立一个index.php ,一个admin.php 文件来分别管理它们。
如图:

交互图:

好了,上面我们详细地介绍了DoYouHaoBaby 是如何创建应用程序的,下面我们来总结一下,最后再拍一张全家福,然后就告别本文。你觉得了?
开发环境总结:
文章中相关路径:
| 类型 | 路径 | 描述 |
|---|---|---|
| Web根目录 | D:\phpcondition\htdocs | Web 根目录,基础 |
| 开发环境目录 | D:\phpcondition\htdocs\doyouhaobaby | 我们测试数据的目录 |
| 框架目录 | D:\phpcondition\htdocs\doyouhaobaby\DoYouHaoBaby | DoYouHaoBaby 框架所在目录 |
| 图形化工具目录 | D:\phpcondition\htdocs\doyouhaobaby\DoYouHaoBaby\Tools\App.php | 应用程序图形化界面工具 |
图形化创建项目相关:
| 项目名 | 项目目录 | 入口文件 | 入口文件路径 | 描述 |
|---|---|---|---|---|
| Home | D:\phpcondition\htdocs\doyouhaobaby\Home | index.php | D:\phpcondition\htdocs\doyouhaobaby\Home\index.php | 入口文件位于项目目录中,入口文件在Web根目录里面 |
| Home | D:\phpcondition\Home | index.php | D:\phpcondition\htdocs\doyouhaobaby\index.php | 入口文件与项目分离,项目目录部署在Web 根目录外面 ,入口文件在Web根目录里面 |
基于入口文件创建应用程序:
| 类型 | 项目名 | 项目目录 | 入口文件 | 入口文件路径 | 描述 |
|---|---|---|---|---|---|
| 虚拟主机部署 | Home2 | D:\phpcondition\htdocs\doyouhaobaby\Home2 | admin.php | D:\phpcondition\htdocs\doyouhaobaby\Home2\admin.php | 入口文件位于项目目录中,入口文件在Web根目录里面 |
| 独立服务器部署 | Home2 | D:\phpcondition\Home2 | index2.php | D:\phpcondition\htdocs\doyouhaobaby\index2.php | 入口文件与项目分离,项目目录部署在Web 根目录外面 ,入口文件在Web根目录里面 |
| 分离入口文件和项目目录 | Home3 | D:\phpcondition\htdocs\doyouhaobaby\Home3 | index3.php | D:\phpcondition\htdocs\doyouhaobaby\Home3\index3.php | 仅仅分离入口文件和项目目录,架构更清晰 |
最后说明一下,不论什么部署模式,那就两个概念,入口文件和项目目录,所以不要被弄混了。同时,它们是可以互相转化的。并且只要调整一下入口文件。当然,如果将项目目录部署到Web根目录外,那我们需要调整项目的共同目录为相对入口文件。
最后,截个图,纪念一下,同时,附上哥的签名:
我们在目录 D:\phpcondition\htdocs\doyouhaobaby 下的测试数据:
如图:

我们在目录 D:\phpcondition 下的测试数据:
如图:

Ok,本文到此结束。
