본문 바로가기
Study/php

PHP 기초 ] include, namespace

by Answer Choi 2015. 9. 24.
반응형

어플리케이션을 만들다 보면 하나의 파일로만 만들 수 는 없습니다.


기능도 다르고, 여러사람들 간의 코웍을 할 수도 있으니...


그래서 include라는 기능이 있습니다.


먼저 blog.php라는 파일을 만들었습니다.


1
2
3
4
5
6
7
8
<html>
<body>
  <?php
  include 'tistory.php';
  echo "My blog addr is ".blog_addr();
 ?>
 </body>
 </html>
cs


이 파일에서는 tistory.php 라는 파일을 include하고 있습니다.


그리고 Line 5에 보면 blog_addr() 이라는 함수를 호출 하는데 blog.php에는 없습니다.


이 함수는 include 한 tistory.php에 있습니다.


tistory.php


1
2
3
4
5
6
7
8
9
<html>
<body>
  <?php
  function blog_addr(){
    return "http://answerofgod.tistory.com";
  }
 ?>
 </body>
 </html>
cs


이 곳에서 tistory blog의 주소값을 리턴해 줍니다.


결과는



주소값이 정상적으로 리턴되는 것을 볼 수 있습니다.


그렇다면 제 다른 블로그인 bolgger의 주소도 리턴되도록 파일을 추가해 보겠습니다.


blogger.php


1
2
3
4
5
6
7
8
9
<html>
<body>
  <?php
  function blog_addr(){
    return "answerofgod.blogspot.kr";
  }
 ?>
 </body>
 </html>
cs


그런데 호출하는 함수가 똑같습니다.


이럴 경우 어떻게 해야 할까요?


blog.php를 이렇게 호출하면 어떻게 될까요?


1
2
3
4
5
6
7
8
9
10
<html>
<body>
  <?php
  include_once 'tistory.php';
  include_once 'blogger.php';
  echo "My blog addr is ".blog_addr();
  echo "My blog addr is ".blog_addr();
 ?>
 </body>
 </html>
cs


결과는 오류가 발생하게 됩니다.


include된 두 파일 모두 같은 함수명을 가지고 있어 어느 파일의 함수를 호출해야 할지를 모릅니다.


이럴 경우 namespace를 사용합니다.


tistory.php


1
2
3
4
5
6
<?php
namespace answerofgod\daum;
function blog_addr(){
  return "http://answerofgod.tistory.com";
}
?>
cs


blogger.php


1
2
3
4
5
6
<?php
namespace answerofgod\google;
function blog_addr(){
  return "http://answerofgod.blogspot.kr";
}
?>
cs



각각 Line 2에 namespace를 추가하였습니다.


이게 각 함수를 구분하는 기준이 됩니다.


그리고 blog.php

1
2
3
4
5
6
7
8
9
10
11
<html>
<body>
  <?php
  include 'tistory.php';
  include 'blogger.php';
  echo "My blog addr is ".answerofgod\daum\blog_addr();
  echo '<br>';
  echo "My blog addr is ".answerofgod\google\blog_addr();
?>
</body>
</html>
cs


Line 6, 8에 함수 호출하는 부분에 namespace를 추가했습니다.


결과는


모두 정상적으로 출력이 되었습니다.


그리고 같은 파일 안의 같은 함수가 있을 경우에도 namespace를 쓸 수 있습니다.


1
2
3
4
5
6
7
8
9
10
<?php
namespace answerofgod\daum;
function blog_addr(){
  return "http://answerofgod.tistory.com";
}
namespace answerofgod\google;
function blog_addr(){
  return "http://answerofgod.blogspot.kr";
}
?>
cs


이렇게 하셔도 결과는 같습니다.


반응형

'Study > php' 카테고리의 다른 글

PHP 기초 ] 파일제어 2  (0) 2015.09.30
PHP 기초] 간단한 파일제어  (0) 2015.09.25
PHP 기초] 함수  (0) 2015.09.24
PHP 기초 ] 배열  (1) 2015.09.24
PHP 기초] 반복문  (0) 2015.09.23

인기글