博客首页
  • 用户名
  • 密码
  • 验证码
  • 网校首页
  • 博客首页
  • 论坛首页
宝宝,快快长大!
静观3Q之战
个人资料
心的旅程 所在地:北京市
博客文章
2009年10月14日 14:05

  或许你想把与CakePHP相关的目录放在文件系统的其它位置。或许是因为虚拟主机的原因,或者可能是你有几个应用程序想要共用一个Cake函数库。这部分将讲述怎样在文件系统里扩展你的CakePHP目录。

首先,了解有关Cake应用程序的三个主要部分:

  1. CakePHP核心函数库, 在 /cake.
  2. 你的应用程序, 在 /app.
  3. 应用程序的根目录, 通常 /app/webroot.

   每个目录都可以被放到文件系统的任何位置,webroot目录除外,它在Web服务器下必须保持可用性。你也可以将webroot文件夹放到你想放置的地方,但你必须保证Cake能够识别它。

   配置你的Cake安装,你需要在/app/webroot/index.php做一些修改。有三个常量需要你亲自编辑: ROOT, APP_DIR, 和 CAKE_CORE_INCLUDE_PATH

  • ROOT 应该设置为包含你应该程序文件夹的目录。
  • APP_DIR 应该被设置为应用程序文件夹的基址((base)name)。
  • CAKE_CORE_INCLUDE_PATH 应该设置为CakePHP函数库的路径。

   让我们来做一个示例,这样你可以从实际中看到高级安装是怎样进行的。想像我正想要CakePHP这样工作:

  • CakePHP 核心函数库位于 /usr/lib/cake.
  • 我的应用程序根目录(application’s webroot) 是 /var/www/mysite/.
  • 我的应用程序(application’s app )贮藏文件夹是 /home/me/mysite.

   给定这种类型的安装,我应该去编辑 webroot/index.php文件( /var/www/mysite/index.php中最后的部分, 在本示例当中)如下所示:

Plain Text View
// /app/webroot/index.php (partial, comments removed) 

if (!defined('ROOT')) {
define('ROOT', DS.'home'.DS.'me');
}

if (!defined('APP_DIR')) {
define ('APP_DIR', 'mysite');
}

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS);
}
  1. // /app/webroot/index.php (partial, comments removed)
  2. if (!defined('ROOT')) {
  3. define('ROOT', DS.'home'.DS.'me');
  4. }
  5. if (!defined('APP_DIR')) {
  6. define ('APP_DIR', 'mysite');
  7. }
  8. if (!defined('CAKE_CORE_INCLUDE_PATH')) {
  9. define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS);
  10. }

  推荐使用DS常量来定义路径,而不使用斜线“/”来定义路径。这样可以防止由于使用分隔符而导致文件丢失错误,同时这样还可以让你的代码更轻便。

3.3.3.1 附加类的路径(Additional Class Paths)

在同一样系统中它可以用来使MVC类能够在应用程序问共享,如果你想让两个应用程序共一个控制器,你可以使用CakePHP的bootstrap.php来将附加的类带到视图中。

bootstrap.php中, 定义某些特定的变量名来使CakePHP知道如何寻找其它MVC类的位置:

Plain Text View
$viewPaths        = array();
$controllerPaths = array();
$modelPaths = array();
$helperPaths = array();
$componentPaths = array();
$behaviorPaths = array();
$pluginPaths = array();
$vendorPaths = array();
$localePaths = array();
$shellPaths = array();
  1. $viewPaths = array();
  2. $controllerPaths = array();
  3. $modelPaths = array();
  4. $helperPaths = array();
  5. $componentPaths = array();
  6. $behaviorPaths = array();
  7. $pluginPaths = array();
  8. $vendorPaths = array();
  9. $localePaths = array();
  10. $shellPaths = array();

在额外类需要调用的时候这些特定的变量可以被设置为绝对的文件系统路径。确保每个路径都有斜线“/”作结尾。

日志分类:CakePHP | 阅读(1166) | 收藏(0) | 评论(0) | 打印

最近读者 (登录后,您就出现在这里。这里登陆)


陈 龙
 评论读取中...
  • 发评论 (限500字以内)
  • 昵称:
  • 验证码:
  •  



以上网友发言只代表其个人观点,不代表中华会计网校博客的观点或立场。