[php] 다른 파일에 저장된 변수를 사용하고 싶을 때

안녕하세요. 개발자 드리머즈입니다.


php로 개발을 하다보니..

여러 파일에서 공통적으로 사용할 수 있는 변수가 필요했습니다.

그러나 $var과 같은 일반적인 변수의 경우.. required_once 와 같은 명령문을 사용하여

관련이 있는 파일에서 인식되지 않았습니다.

그래서 딱히 방법이 없나 포기하고 있었는데, stackoverflow에서 괜찮은 방법을 찾았습니다.


그 전에 먼저 문제가 되던 상황부터 정리하겠습니다.

main.php

lib.php

<?php
require_once __DIR__ . '/lib.php';

$debug = true;


lib_function();

?>

<?php
function lib_function(){

    if($debug) echo '$debug is true';

}

?>


위 처럼 코드가 되어있을 때

lib.php의 함수에선 main.php에 정의된 $debug를 인식하지 못합니다.


이를 해결하기 위해,

 main.php

lib.php 

<?php
require_once __DIR__ . '/lib.php';

define('DEBUG', true);


lib_function();

?>

<?php
function lib_function(){

    if(DEBUG) echo 'DEBUG is true';

}

?>

define()함수를 사용하면

lib.php에서 상수 DEBUG를 인식합니다.


하지만.. 반대로,

main.php 

lib.php 

<?php

echo 'DEBUG is '.DEBUG;
require_once __DIR__ . '/lib.php';

echo 'DEBUG is '.DEBUG;


lib_function();

?>

 

<?php
function lib_function(){

    define('DEBUG', true);

}

?>

lib.php에서 상수를 정의하고,

main.php에서 이를 인식하려고 해봤으나..

require_once명령문 이전과 이후 모두 인식하지 못했습니다.


그!런!데! 다시 lib.php코드를 보니.. 함수 안에서 상수를 정의했네요..

 main.php

lib.php 

 

<?php

echo 'DEBUG is '.DEBUG; //①(인식 못 함)
require_once __DIR__ . '/lib.php';

echo 'DEBUG is '.DEBUG; //②(인식 함)


lib_function();

?>

 

<?php

define('DEBUG', true);
function lib_function(){

}

?>

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

작성자

Posted by 드리머즈

관련 글

댓글 영역