본문 바로가기

코딩공부/WEB2 - PHP

[9] PHP 함수 생성

코드 함수화

  • 코드를 함수화하여 코드의 복잡도를 낮춘다.
  • 코드에 어떠한 기능인지 유추할 수 있는 이름을 부여하여 가독성을 높일 수 있다.
  • 코드의 재사용 - 코드의 중복을 최소화하여 함수 호출을 통해 동일한 기능을 쓸 수 있다.
  • 경제적(효율성 증가) - 코드의 수정이 함수의 정의부분에서만 이루어짐으로서 기능개선을 할 수 있다. 

 

함수의 형식

사용자 정의 함수

https://www.php.net/manual/en/functions.user-defined.php

 

PHP: User-defined functions - Manual

 

www.php.net

 

기본 함수 정의와 호출

<h2>Basic</h2>
<?php
  #함수 정의
  function basic(){
  print("Lorem ipsum dolor1<br>");
  print("Lorem ipsum dolor2<br>");
}
  #함수 호출
  basic();
  basic();
  basic();
?>

 

Parameter 와 Argument 를 사용한 함수

  • parameter variable (매개변수) - 호출 시 입력값을 전달받아 함수 내에서 사용하는 변수
  • argument (인자) - 구체적인 표현식(입력한 실제값)
<h2>parameter &amp; argument</h2>
<?php
  #함수 매개변수를 전달받아 동작
  function sum($left, $right){
    print($left+$right);
    print("<br>");
  }
  sum(2,4);
  sum(4,6);
?>

 

Return 값

  • return value - 함수의 실행 결과값을 호출한 곳으로 돌려보낸다.

이 전 코드는 sum() 함수에 더하기와 출력 기능 2가지를 수행하고 있다. 단지 더한 값만 필요할 수 있다. 더한값을 출력하거나 이메일로 보내거나, 파일로 저장하거나 등의 다른 동작을 원할 수 있다.

따라서, "하나의 함수는 하나의 기능만을 담는다"는 관점을 가지는게 좋다.

 

sum1()은 더하고 자체적으로 출력하는 기능이 있어서, 더하고 출력용으로 사용할 수 있지만, 

sum2()는 단지 더한 결과값만 리턴값으로 받아오므로 다양한 용도로 사용할 수 있게된다.

<h2>return</h2>
<?php
  function sum2($left, $right){
    return $left+$right;
}
  print(sum2(2,4));
  file_put_contents('./result.txt', sum2(3,5));
?>

 

함수를 정의한 function( ){...code...} 는 Statement 이다. 값이되지않지만, 함수를 호출하고 리턴값을 받아온다면 '값'이 되기때문에 "표현식"이다.

 


함수의 활용

함수의 정의는 함수 호출 전에 위치해야한다.

<?php
function print_title(){
  if(isset($_GET['id'])){
    echo $_GET['id'];
  }else{
    echo "Welcome";
  }
}
function print_content(){
  if(isset($_GET['id'])){
    echo file_get_contents('./data/'.$_GET['id']);
  }else{
    echo "This is Javakong Homepage.";
  }
}
function file_list(){
  $list = scandir('./data/');
  $i=0;
  while($i<count($list)){
    if($list[$i] != '.'){
      if($list[$i] != '..'){
        echo "<li><h3><a href=\"index.php?id=$list[$i]\">$list[$i]</a></h3></li>\n";
      }
    }
    $i++;
  }
}
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title><?php print_title();?></title>
  </head>
  <body>
    <h1><a href="index.php">Javakong</h1>
    <ol>
      <?php
        file_list();
       ?>
    </ol>
    <h2>
      <?php
        print_title();
      ?>
    </h2>
    <?php
        print_content();
     ?>
  </body>
</html>

 

 

 

'코딩공부 > WEB2 - PHP' 카테고리의 다른 글

[11] PHP 글 생성 기능 구현  (0) 2019.09.26
[10] PHP에서 FROM과 GET, POST  (0) 2019.09.26
[8] PHP 제어문 - 조건문, 반복문  (0) 2019.09.25
[7] PHP 함수 - Built in Function  (0) 2019.09.25
[6] PHP의 URL 파라미터  (0) 2019.09.25