[php] 다른 파일에 저장된 변수를 사용하고 싶을 때
안녕하세요. 개발자 드리머즈입니다.
php로 개발을 하다보니..
여러 파일에서 공통적으로 사용할 수 있는 변수가 필요했습니다.
그러나 $var과 같은 일반적인 변수의 경우.. required_once 와 같은 명령문을 사용하여
관련이 있는 파일에서 인식되지 않았습니다.
그래서 딱히 방법이 없나 포기하고 있었는데, stackoverflow에서 괜찮은 방법을 찾았습니다.
그 전에 먼저 문제가 되던 상황부터 정리하겠습니다.
main.php |
lib.php |
<?php $debug = true; lib_function(); ?> |
<?php if($debug) echo '$debug is true'; } ?> |
위 처럼 코드가 되어있을 때
lib.php의 함수에선 main.php에 정의된 $debug를 인식하지 못합니다.
이를 해결하기 위해,
main.php |
lib.php |
<?php define('DEBUG', true); lib_function(); ?> |
<?php if(DEBUG) echo 'DEBUG is true'; } ?> |
define()함수를 사용하면
lib.php에서 상수 DEBUG를 인식합니다.
하지만.. 반대로,
main.php |
lib.php |
<?php echo 'DEBUG is '.DEBUG; echo 'DEBUG is '.DEBUG; lib_function(); ?> |
<?php define('DEBUG', true); } ?> |
lib.php에서 상수를 정의하고,
main.php에서 이를 인식하려고 해봤으나..
require_once명령문 이전과 이후 모두 인식하지 못했습니다.
그!런!데! 다시 lib.php코드를 보니.. 함수 안에서 상수를 정의했네요..
main.php |
lib.php |
<?php echo 'DEBUG is '.DEBUG; //①(인식 못 함) echo 'DEBUG is '.DEBUG; //②(인식 함) lib_function(); ?> |
<?php define('DEBUG', true); } ?> |
lib.php 함수 밖에서 상수를 정의하면,
require_once __DIR__ . '/lib.php'; 이후에는(②번)
DEBUG 상수를 인식합니다.
①의 코드는 아직 lib.php를 읽어오지 않았을 때의 시점이라
DEBUG 상수를 인식하지 못합니다.
다시 정리를 하면.. php 내부에서 정의된 변수($var)는
다른 파일에서 인식되지 못합니다.
이와 달리.. 상수(define()함수)로 정의되면
다른 파일에서도 인식이 가능합니다.
참고하세요.
*참고
https://stackoverflow.com/questions/2217312/how-to-set-multiple-php-classes-intoa-debug-mode
댓글 영역