9

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

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

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

4

3 回答 3

8

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. 您可以直接将其部署到任何服务器上,而无需更改常量,也可以在您的本地主机上完美运行。
  4. 遵循标准约定等
于 2012-09-05T05:22:20.397 回答
1

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

您可以Configure::write($key,$value)在自己的配置文件中使用,然后通过Configure::read($key). 它还允许您使用能够自动执行该过程并读取外部配置文件的阅读器。CakePHP 默认提供了一个 PHPreader 和一个 INIreader,您可以创建阅读器来扩展它。

于 2012-09-04T21:49:50.960 回答
0

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

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');

在控制器中(本例为 'app/Controller/TwitterController.php'),您可以像这样使用它:

$settings = Configure :: read('Twitter'); 
于 2015-03-05T12:10:39.753 回答