2016년 11월 24일 목요일

2. PHP [Embedded && Advanced PHP]

PHP 파일(언어)에서 HTML element를 print를 통해서 출력가능하다. 허나 그렇게 할 경우 다음과 같은 사진을 보면 가독성도 좋지 않을 뿐더러 error가 생길 가능성만 높다.







가장 좋은 PHP 프로그래밍 스타일은 PHP code안에 print(echo)가 적게 하는것이다.
그렇다면 print 없이 어떻게 page안에 dynamic한 contents를 넣을수 있을까??

Embedded PHP


이제껏 .php 파일안에 php문법만 쓸수 있다고 생각했을것이다. 하지만 .php파일안에서 html syntax도 같이 쓸 수 있다. 그래서 보통 php프로그래밍을 할때 일반적인 text를 나타낼때는 html 문법을 사용하고 동적인 행동이나 페이지를 구성하고 싶을때는 php문법을 쓴다. 즉, html과 php을 혼용해서 쓰는 것이 일반적이고 그렇게 해야한다.
html과 php를 혼용할때 쓰는 php syntax는 다음과 같다.

PHP expressions block
Embedded PHP 에서 자주 사용하는 문법으로 다음과 같은 형태로 사용한다.




위에서 보듯이  <?= expression ?> 은  <?php print expression ?> 과 같은 의미로 사용되는 것을 볼 수 있다.

밑의 사진은 Embedded 한 php 파일을 만든 예시이다.
다음과 같은 php파일을 요청하게 되면 php interpreter가 php language로 사용된 부분만 interpret해주어서 그에 대한 output값을 html 형태로 browser에게 출력하게 되는 것이다.















foreach loop
array에 쓰이는 반복문으로 프로그래머가 쓰기 편한 문법이다.






Advanced PHP


Advanced PHP에서는 function의 이용, file I/O 에 대해 설명한다.

function
php 에서는 다음과 같은 형식으로 function을 정의한다.



PHP에서 function은 마찬가지로 type을 선언하지 않으며 parameter,return값이 없을 수도 있으며 return값이 없는 경우 return값이 자동적으로 NULL로 설정된다.
그리고 다음과 같이 특이하게 function선언의 파라미터에 Default값을 설정해놓을 수 있다.






function을 사용하게 되면 당연히 local variable과 global variable가 있을 텐데, PHP에서는 특이하게 global variable을 function안에서 쓸려면 쓰고 싶은 변수 앞에 global 이라는 syntax를 붙여주어야 한다.






PHP File I/O 
PHP script language에서 제공하는 File의 입출력을 다루는 메소드들이 있다.










file 함수와 file_get_contents 함수 모두 file의 text를 읽어오지만 file은 배열로 읽어오지만 file_get_contents는 하나의 string형태로 읽어온다.






file_puts_contents함수는 원하는 file에 내용을 저장하게 하는데 다음과 같이 3번째 인자에 FILE_APPEND라는 값을 주면 저장된 text.file에 있는 내용 뒤에 원하는 text를 추가시킬 수 있고 만약 3번째 인자 없이 쓰게 되면 전에 있는 contents는 모두 지우고 추가할 text를 넣게 된다.









unpacking an array: list
file 함수를 쓰게 되면 .txt파일의 내용을 array로 가져온다고 했는데 그 파일의 구조를 정확히 이해하고 있을때 빠르게 .txt파일의 값들을 사용하고 싶을때  list함수를 쓰기도 한다.




list함수와 전에 배운 explode(string을 나누는 함수)을 이용해서 txt파일에 내용을 정리(분류)할수 있다.










Reading Directories
file System안에는 여러 directory가 존재하고 그 directory안에는 여러 파일이 존재하는 데 지금까지는 모든 file(.php , .html , .css)이 한 directory에 있다고 가정하면서 설명해왔지만 실제로 file들은 여러 directory에 분산되어있다.

다음은 directory 또는 file을 검색할때 사용하는 함수들이다.




보다시피 scandir은 파일이름만 모아서 배열로 return해주지만 glob함수는 path까지 합쳐서 배열로 return해준다.





  • *은 wildcard로써 poem으로시작하는 파일이면서 확장자는 .dat인 파일을 선택하게한다.
  • glob에서 반환된 string에 path+file이 되는데 basename함수를 통해 path를 없애준다.




0 개의 댓글:

댓글 쓰기