질문/조언질답게시판
Extra Form
PHP PHP 7.2

예전에 php 파일에 함수를 작성하고 템플릿에서 해당 함수를 실행한 것의 형식을 배운 적이있습니다.

그때는 그냥 이런식으로 하는거니 다음에 필요하면 복사해서 사용하면 되겠다 정도 생각했었는데요.

 

지금은 이해하고 사용하려고 살펴보니 한가지 궁금증? 이 생겼습니다.

 

php 함수

 

fnc () {

 

return $data;

}

 

템플릿에서....

php 파일 include

{@ $data = fnc();}

 

여기서 그동안 제가 오해하고 있었던 거 같은게 생각이 나서 질문 드립니다.

템플릿에서 $data와 php에서 최종결과를 담은 $data는 전혀 연관 관계가 없는 것 같다는 생각이 이제 들었습니다. 

 

변수 명을 일치 시킬필요는 없는 거겠죠?

 

함수에서 변수에 담긴 것만 리턴시킬 이유도 없고 string이 return 될수도 있고 한데 변수명이 같아야 한다고 생각한건 그냥 샘플로 알려주실때 변수명이 같아서 같아야 한다고 생각한거 같다는 생각이 이제 듭니다.

 

실제 템플릿에서 return 값을 저장하기 위한 변수는 아무것이나 쓰면 될 것 같다는 생각인데...

제가 잘못 생각한거지 궁금하네요..

 

php는 아직 기초부분을 진행중이라 ㅋ

 

  • profile

    네, 이해를 돕기 위해 똑같은 변수명을 사용할 수도 있겠지만 꼭 그래야 한다는 법은 없습니다.

     

    function add($a, $b) {

        return $a + $b;

    }

     

    $c = add(3, 7);

    echo $c; // 10

     

    이런 예제를 보아도 함수 안에서는 $a, $b를 사용했지만 실제 호출할 때는 그냥 3, 7을 넘겼고,

    함수 안에서는 리턴값을 변수에 담지 않았지만 함수 밖에서는 $c에 담았습니다.

    함수 안에는 $a, $b만 존재하고, 함수 밖에는 $c만 존재하는 것입니다.

    이름은 그냥 붙이기 나름입니다.

  • profile profile

    이해가 되기 시작하니까 과거 엉뚱한 상상을 했던게 생각이 하나 둘 기억이 납니다.

    함수 호출에서 인자로 3,7을 주고 함수가 받아서 실행한 결과값 10을 주고 $c에 담았으니 $c를 출력하니 10이 찍히네요 ㅋ

    함수 사용에 대해서 공부해 보니 반복사용시 코드를 매번 작성하지 않고 함수를 호출(실행) 하는 것으로 일거리가 많이 줄어드네요.

  • profile profile
    반복되는 코드를 줄이기 위해 함수를 만들고, 서로 연관된 함수들을 한데 묶어서 쉽게 관리하기 위해 클래스를 만들고, 점점 늘어나는 함수와 클래스들의 이름이 서로 충돌하지 않도록 하기 위해 네임스페이스를 만들고... 그렇게 점점 PHP를 배워가시는 거죠. ㅎㅎ

    딱히 반복되는 코드가 아닌 경우에도, 함수 안팎의 변수가 서로 격리된다는 점을 이용하기 위해 일부러 함수를 만들어 쓰기도 합니다. 로직이 복잡해질수록 변수가 너무 많아져서 뭐가 뭔지 기억하기 힘드니까요.
  • profile profile
    말씀하신 것들이 객체화된 것이고 php가 처음에는 함수로만 구성된 언어였다는거를 오늘 배웠습니다 ㅋ 객체 부분 오늘 처음 영상으로 짧게 봤는데 php를 아직 조금밖에 모르는 상태에서 살짝 어렵긴 한데 말씀하신 그런 어려움을 해결하기 위한 것들이 객체화를 지향한 언어들이란 설명이 아주 조금 이해가... 사실 어렵습니다 ㅋ
  • profile profile

    객체라고 해봐야 몇 개의 함수와 변수들을 한 꾸러미로 묶은 것 뿐, 별거 아니예요. 객체 없이 오직 함수로만 이루어져 있고 그 단순함을 자랑스럽게 여기는 함수형 언어도 있습니다.

    PHP에서도 함수만 쓰든 함수를 객체에 넣어서 쓰든 기능상의 차이는 없는데, "짖도록 해라 이 개를" bark($dog); 하는 것보다는 "개야 짖어라" $dog->bark(); 하는 것이 좀더 직관적이라고 생각하는 사람이 많기 때문에 객체를 사용하곤 하지요. 같은 이름의 함수라도 개가 $husky냐 $poodle이냐에 따라 전혀 다른 소리를 내도록 할 수 있다는 장점도 있습니다. ㅋ