как обращаться с файлом конфигурации в CakePHP

Я знаю, что в папке config находятся файлы с именем core.php, который я могу настроить параметры приложения как режим отладки, сеанс, кэш и т. д.

но я хочу настроить файл для моего приложения. Я хочу, например, настроить, сколько сообщений может отображаться на главной странице, размер thubnails и т. д.

Я думаю, что лучшее место в папке config, но где и когда разбирать этот файл в приложении (bootstrap, AppController другой механизм ?) и что такое лучшее расширение .массив ini или PHP (по причине производительности тоже). Какова наилучшая практика для этого ?

3 ответов


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. следовать стандартными конвенциями etc.

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

в контроллере (этот пример ' app / Controller / TwitterController.php'), вы можете использовать это как:

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