프로젝트를 진행하면서 각 개발자의 계정(도메인)정보를 config 파일에 기록하여 각각 관리하는데,
CakePHP에서는 APP디렉토리 마다 config/core.php 를 만들어서 필요한 파일을 기록하고 있습니다.
core.php
Configure::write(‘hosts’, array( 'WWW' => 'http://www.minseop.com', ));
문제가 된 부분은 Javascript 였습니다.
Javascript 에서도 이런 사용자별 호스트 정보를 이용할 경우가 있지요.
그냥 js 파일을 만들어서 기록하고,
layout 에 담아두면 문제는 없습니다.
하지만, 관리적인 면에서 비효율적이라는 생각이 들었습니다.
이를 해결하기 위해 PHP에서 이용할 수 있는 하나의 방법입니다.
index.php
<script type="text/javascript" src="/js/extend.php"></script>
extend.php
<?php
header('content-type:application/x-javascript');
$message = 'Javascript Test';
echo("document.write('{$message}')\n");
?>
이렇게 이용하면 외부 파일을 불러와서 이용하는 것이 가능해 집니다.
CakePHP에서 이 방식을 이용하면,
Configure Class를 이용하기 위해 너무 많은 라이브러리가 필요했습니다.
아니면, hosts Array 만 따로 파일을 만들어서 core.php와 extend.php에서 공동으로 이용할 수도 있습니다.
하지만 개별적으로 관리해야 하는 파일이 하나 추가되는 부분이 조금 걸리네요..^^;;
그래서, 다른 방법으로 Javascript를 위한 컨트롤러를 생성할 수 있습니다.
exjs_controller.php
<?php
class ExjsController extends AppController {
var $name = 'Exjs';
var $uses = null;
var $autoRender = false;
var $autoLayout = false;
function index() {
header('content-type:application/x-javascript');
$hosts = Configure::read('hosts');
foreach ($hosts as $k => $v) {
echo "var HOST_{$k} = '{$v}';\n";
}
}
}
?>
index.php
<script type="text/javascript" src="/exjs/"></script>
이런 방법으로 Javascript와 PHP에서 이용할 수 있는 config파일을 쉽게 관리할 수 있습니다.
또한, hosts 외에도 다른 설정 값을 이용할 수 있다는 장점도 있네요.^^
참조 :
이올린에 북마크하기
이올린에 추천하기