fleaPHP框架的一些基础问题

一些刚接触FleaPHP的大虾,一些基础性的东西,由于开发教程及一些实例没有详细的说明,往往会被一些简单的问题所困扰。比如路径的问题、如何进行类功能扩展的问题等等。FleaPHP对我辈来说,是如此晦涩难懂的东西。但在dualface老大面前,竟然视若无物,对一些细节的东西,一会藉口说太简单,一会又藉口说太忙,不愿涉及。也难怪,如此千年老妖,已修炼成羽化成仙的境界,功力自然无比深厚,这些基础性的东西,自然不入法眼。但我辈是凡夫俗子,没有如此高深的功力,因此一些基本性的东西如果不多说,重复地说,唠唠叨叨地说,是不能弄明白的。道理是越摆才越明的么。
下面先说说路径的问题,因为牵涉到FlEA:loadClass()函数(FleaPHP 1.0.61为load_Class()),因此我必须唠唠叨叨地说。为了方便说明,先秀一下我的开发项目office的目录结构(相关部分):
[webroot]/office                |                +- libs                |        +- FLEA                |        +- ......                +- APP                |        +- ......                +- Admin                |        +- Controller                |        +- Config                |        +- .....                +- _Shared                |        +- Model                |        +- Config                |
说明:office/libs目录里面放的是一些FleaPHP、Smarty等一些框架类。office/APP目录里放的是一些前台运行程序及参数配置文件、模版文件等一些东西。office/Admin目录里放的是管理后台运行程序及参数配置文件、模版文件等一些东西。office/Admin/Controller里面放的自然是后台控制器类文件。office/ADmin/Config目录里的是配置文件。office/_Shared/Model目录里放的是数据表对象类。office/_Shared/Config目录里的是前后台都要用到的数据库链接等一些参数配置文件。再贴一段index.php的代码:
  1. <?php
  2. /**
  3. * 文件名:index.php
  4. * 注释:后台管理入口文件
  5. * 作者:hegz
  6. * 更新时间:2007/02/27
  7. */
  8. $dsn = '../_Shared/Config/DSN.php';
  9. define('WEBROOT_DIR', dirname(dirname(__FILE__)));
  10. define('ADMIN_DIR', WEBROOT_DIR . '/Admin');
  11. //define('DEPLOY_MODE', true); //部署模式时启用
  12. define('NO_LEGACY_FLEAPHP', true); //如果启用,即取消与旧版FleaPHP兼容
  13. require('../libs/FLEA/FLEA.php');
  14. FLEA::loadAppInf($dsn);
  15. FLEA::loadAppInf(ADMIN_DIR. '/Config/Admin_INF.php');
  16. FLEA::import(ADMIN_DIR);
  17. FLEA::import(WEBROOT_DIR . '/_Shared');
  18. FLEA::runMVC();
  19. ?>

复制代码说明:
  1. $dsn = '../_Shared/Config/DSN.php';
  2. FLEA::loadAppInf($dsn);

复制代码因为数据库链接前后台都要用到,因此我将dbDSN
数据链库接参数独立出来单独放在一个文件,这样不用前后台的配置文件都重复写这方面的代码。Framework  - flea - sky2000 - QQ308745107
  1. define('WEBROOT_DIR', dirname(dirname(__FILE__)));
  2. define('ADMIN_DIR', WEBROOT_DIR . '/Admin');
  3. FLEA::import(ADMIN_DIR);
  4. FLEA::import(WEBROOT_DIR . '/_Shared');

复制代码Framework  - flea - sky2000 - QQ308745107 说明:这里定义了一些程序运行过程中要用到的路径常量。FLEA::import()函数的作用就是把这些路径数据塞进全局变量数组$GLOBALS['__FLEA_CORE__']['CLASS_PATH']中保存起来,以方便其它程序引用。要想看到效果,需要插入下面的断点进行调试。在此我再唠叨一句,dump()函数用来调试程序真是太方便了,大家在调试程序时一定要会用,多用。老大为我们设想得真是太周到了,大家饮水不要忘了挖井人啊。
  1. $dsn = '../_Shared/Config/DSN.php';
  2. define('WEBROOT_DIR', dirname(dirname(__FILE__)));
  3. define('ADMIN_DIR', WEBROOT_DIR . '/Admin');
  4. //define('DEPLOY_MODE', true); //部署模式时启用
  5. define('NO_LEGACY_FLEAPHP', true); //如果启用,即取消与旧版FleaPHP兼容
  6. require('../libs/FLEA/FLEA.php');
  7. FLEA::loadAppInf($dsn);
  8. FLEA::loadAppInf(ADMIN_DIR. '/Config/Admin_INF.php');
  9. FLEA::import(ADMIN_DIR);
  10. FLEA::import(WEBROOT_DIR . '/_Shared');
  11. // 插入调试断点
  12. dump($GLOBALS['__FLEA_CORE__']['CLASS_PATH']);
  13. exit;
  14. FLEA::runMVC();

复制代码运行程序,显示的结果如下:
Array(    [0] => d:\apmxe4\htdocs\office\libs\FLEA    [1] => d:\apmxe4\htdocs\office/Admin    [2] => d:\apmxe4\htdocs\office/_Shared)

至于WEBROOT_DIR
,自然为d:\apmxe4\htdocs\office
了。这些都是绝对路径,也就是说这是文件存放在主机上的物理路径,与“http://127.0.0.1/office/”这样的资源路径是两码事,由incude()、require_once()等包含命令装载文件时使用,不要搞混了。相对路径是office/Admin中的程序通过“../_Shared/Model”这样的方式访问office/_Shared/Model中的文件,就属于相对路径。这些路径在程序运行时装载类文件或设置Smarty模版参数时都要用到。这样设置路径的好处,方便以后部署到服务器或进行主机间迁移。同时,即使将office目录改为其它名字,都能保证程序运行不出问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值