как обращаться с файлом конфигурации в 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'];
это может выглядеть длинным процессом для решения этой задачи, но после этого это поможет вам во многих обостренные чувства.
преимущества:
- вы можете легко определить некоторые константы (как и любой путь к файлу и т. д.).
- вы можете поместить весь свой код ajax во внешние JS-файлы.
- вы можете напрямую развернуть его на любом сервере без изменения констант, а также отлично работать на вашем localhost.
- следовать стандартными конвенциями 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');