繁体   English   中英

如何处理CakePHP中的配置文件

[英]how to deal with configuration file in CakePHP

我知道在文件夹配置中有一个名为core.php的文件,我可以将应用程序选项配置为调试模式,会话,缓存等。

但我想为我的应用程序配置文件。 我想要例如配置主页中可以显示多少帖子,thubnails大小等。

我认为这是config文件夹中最好的地方,但是在应用程序中解析thos文件的地方和时间(bootstrap,AppController的另一种机制?)以及什么是最好的扩展.ini或PHP数组(出于性能原因)。 这样做的最佳做法是什么?

DEFINE OWN CONSTANT FILE

创建一个文件让我们假设'site_constants.php'在app / Config文件夹中包含一些常量变量。 在其中定义以下常量:

<?php    
define('HTTP_HOST', "http://" . $_SERVER['HTTP_HOST'].'/');
if(HTTP_HOST == 'localhost' || HTTP_HOST == '127.0.0.1')
{
     define('SITE_URL', HTTP_HOST.'app_folder_name/');
}
else
{
     define('SITE_URL', HTTP_HOST);
}

将它包含在app/Config/bootstrap.php

require_once('site_constants.php');

现在您可以在任何地方使用它进入您的网站。 这也是一种动态。

DEFINE OWN CONFIGURATION FILE

创建一个文件让我们假设'my_config.php'在app / Config文件夹中包含一些常量变量。 按以下方式定义常量:

<?php
$config['PageConfig'] = array('PostPerPage' => 5, 'UserPerPage' => 15);

然后在app/Controller/AppController.php ,在beforeFilter() method写下以下行:

function beforeFilter()
{ 
     Configure::load('my_config');        
}

现在,在您的控制器方法中,您要访问要在分页列表中列出的页码。 您可以通过以下代码使用它:

$page_config = Configure :: read('PageConfig');   
$user_per_page = $page_config['UserPerPage']; 
//or
$post_per_page = $page_config['PostPerPage']; 

这可能看起来很长,以处理此任务,但一旦完成,它将在很多方面帮助您。

以下是优点:

  1. 您可以轻松定义更多常量(如任何文件路径等)。
  2. 您可以将所有ajax代码放入外部JS文件中。
  3. 您可以直接将其部署到任何服务器上,而无需更改常量以及完美地工作到您的localhost。
  4. 遵循标准惯例等

CakePHP为此提供了Configure类。 请参阅文档

您可以在自己的配置文件中使用Configure::write($key,$value) ,然后通过Configure::read($key)应用程序中其他位置的值。 它还允许您使用自动执行过程并读入外部配置文件的阅读器。 CakePHP默认提供PHPreader和INIreader,您可以创建读者来扩展它。

使用配置变量创建新文件,例如:

Configure::write('Twitter', array(
    'consumer_key' => "OTh1sIsY0urC0n5um3rK3Y4T878676",
    'consumer_secret' => "OTh1sIsY0ur53cReT76OTIMGjEhiWx94f3LV",
    'oauth_access_token' => "12345678-OTh1sIsY0urAcc355K3YT878676Y723n4hqxSyI4",
    'oauth_access_token_secret' => "OTh1sIsY0urACC355T0KEnsdjh4T878676FPtRRtjDA29ejYSn"
));

将此文件保存在app / Config / twitter.php中

在app / Config / bootsrap.php中包含该文件:

require_once('twitter.php');

在Controller(这个例子'app / Controller / TwitterController.php')中,你可以使用它:

$settings = Configure :: read('Twitter'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM