PHP - 제어구조
제어구조
‘이 정도는 다 알고 있게지?’.. 라고 생각되는 아주 기본적인 부분.(이걸 모르면 프로그래밍을 할 수 없다.
- if : 조건의 참,거짓으로 동작을 제어
- if($boolean)
{~}~}
else if($boolean2)
{
else
{~~~} -
else if(=esleif) 와 else는 없을 수 있다.
- if($boolean):
elseif($boolean2):
else:
~~~
endif; - “대체 문법”, “콜른 문법”이라고 불린다.
- 대괄호를 사용하지 않고 endif처럼 표현하기 때문에 view쪽의 HTML이 복잡한 곳에 사용하기 좋다.
-
esleif 와 else는 없을 수 있다.
else if를 사용할 수 없다. - while : 조건이 참일 동안 계속 반복
- while($boolean){
~~~
} -
while($boolean):
~~~
endwhile; - do-while : 최초 무조건 1번은 실행하는 while
- do{
~~~
}while($boolean); -
한마디 : 거의 쓰이지 않는다.
- for : 지정 조건을 만족할 동안 반복, 반복할 때마다 조건을 바꿔줄 수 있음.
- for($i=0;$i<10;$i++){
~~~
} -
for($i=0;$i<10;$i++):
~~~
endfor; - foreach : 배열을 루프하는 가장 쉬운 방법. (객체도 루프할 수 있다.)
- foreach($rows as $k=>$row){
~~~
} - foreach($rows as $row) :$k는 없을 수 있다.
-
foreach($rows as $k=> & $row) : $row를 참조로 사용할 수 있다. (이경우 루프 후에 unset($row) 해주는게 좋다. 꼭)
- foreach($rows as $k=>$row):
~~~
endforeach; - foreach는 php 버전별로 동작이 조금씩 다른 부분이 있다. 사용시 주의하라!
-
한마디 : 아주 자주 사용된다! 꼭 익혀놓자.
- switch : if 문과 수행이 비슷하다. 동일 코드 파편을 좀더 실행할 경우 사용한다.(느슨한 비교(==)를 사용함에 주의!)
- switch($k){
case ‘a’:~;break;~;
case ‘b’:
case ‘c’:~;break;~;break;
case ‘d’:
} -
a,c,d는 전부 기 부분만 실행하고 switch 를 나오지만,
b 인 경우 b부분 실행후 c까지 switch 를 실행하고 나온다. -
switch($k):
case ‘a’:~;break;~;
case ‘b’:
case ‘c’:~;break;~;break;
case ‘d’:
endswitch; - break : 루프를 종료한다.
- while,do-while, for, foreach , switch 등에서 사용할 수 있다.
- break; // or break 1;
-
를 만다면 해당 루프문 밖으로 나간다.
- break 2;
-
를 만다면 해당 루프문 하고 그 밖의 루프문 밖으로 나간다.
-
말로만 설명하기 어렵다 링크타고가고 에제가 외 그런지 생각해보자.
- continue : 현재 루프를 끝내고 다음 루프를 동작시킨다.
- continue; // or continue 1;
-
를 만나면, 현재 루프를 중지하고 다음 루프를 실행한다.
- continue 2;
-
를 만나면, 동작 루프문의 밖의 루프문을 기준으로 현재 루프를 중지하고 다음 루프를 실행한다.
-
말로만 설명하기 어렵다 링크타고가고 에제가 외 그런지 생각해보자.
- declare : 코드의 동작 레발에 따라 체크할 수 있도록 해준다.
- <?php
function myfunc() {
print “In tick func\n”;
}
$i = 10;
register_tick_function(“myfunc”);
declare(ticks=4) {
while($i–){
echo $i.’—’;
}
}
?> - declare 속에 있는 구문의 저레벨 동작에 따라 이벤트가 발생하면 ticks 로 선언된 횟수가 되면
register_tick_function 에 등록된 함수가 실행된다. - 한마디 : 솔찍이 이날평생 한번도 써번 적이 없다.
- declare(strict_types=1);
-
이걸 선언할 경우 함수 사용에 type hint를 선언할 경우 그 타입에 안 맞으면 fatal error가 발생한다.
- return : 함수내에서 결과를 반환한다.
- function a(){
$x = ‘123’;
return $x;
} -
inlude()나 requrie()의 파일 속에서 사용되었다면
$x = inlude(‘a.php’);
처럼 값을 받아와서 사용할 수 있다. -
하지만 이렇게 만들지말고 차리리 함수등으로 만들어서 명식적으로 부르도록 하라!
- include, require, include_once, require_once
- 대상 파일을 현파일로 inlcude 시킨후 소스를 사용하도록 한다.
- include vs require
- include 는 실패시 Warning 발생
- require 는 실패시 Fatal Error발생.
-
중요 파일을 include 하고 싶다면 require 를 사용하라!!
- include vs include_once
- include : 여러번 include 할 수 있음.
- include_once : 최고 한번만 include 됨
-
함수, 라이브러리, 클래스 같은 파일이라면 include_once 를 사용하라!
-
한마디 : 이걸 모르면 바보 같이 한 파일안에 다 적어놔야한다.
- goto : 특정 라벨로 동작을 이동시킨다.
- 해줄말 없다. 될 수 있으면 사용하지 말라.
- php 5.3이상에서 사용가능.
- C언에서도 될 수 있으면 사용하지 말라고 되어있다.
-
단순한 한 파일에서 사용하면 문제가 안되지만… 여러 파일에 여러 라벨들이 들어있다만, 지옥을 보게 된다고 한다.
- goto a;
echo ‘Foo’;
a:
echo ‘Bar’; - echo ‘Foo’;는 실행이 안될 것이다.