  | 
  | 
  | 
  | 
  | 
 
|   | 
 | 
  | 
  | 
  | 
  | 
  | 
 
  |  
  |  
| 글쓴사람 | 	관리자 |  
| 글쓴시간 | 2023년 1월 18일 오전 5시 1분 7초 |  
|     제목 | [컬럼] Tplus = PHP 뷰 영역의 서버사이드 언어 |  
  |  
  |  
PHP 웹개발에 있어서
 
 뷰 영역에 별도의 언어가 필요하다고 느끼는 이유는 무엇이며
 
 뷰 언어에 요구되는 조건들이 있다면 무엇이고 Tplus는 어떻게 만족하고 있을까.
 
 그리고 앞의로의 과제.
 
 
 
 이렇게 이야기하려고 합니다
 
 
 
 PHP 특징은 
 
 장구한 역사, 
 
 안정되고 강력한 젠드엔진, 
 
 이제는 컴파일 언어와 구분이 안되는 몸집.
 
 여전히 어쩔 수 없는 더티함. 
 
 
 
 프로그래밍 언어들은 무엇이 왜 좋은지 혹은 안 좋은지 
 
 서로에게 배워가며 변화합니다. 구경해보면 너무 재미있습니다.
 
 
 
 PHP 뷰 언어에 필요한 기본 요건은
 
 1. 객체지향, 2. 펑셔널 패러다임, 3. 표준문법, 4. 마크업언어
 
 Tplus는 이걸 클린 심플하게 제공한다고 생각합니다.
 
 
 
 1. 객체지향
 
 [= {6,7,8}.average()]
 
 7
 
 객체지향이란 기본적으로 데이터(=객체)가 주인공이고 
 
 해당 데이터 타입에 할 수 있는 연산(=메소드) 을 붙여서 
 
 코드를 구성하면 좋다는 이야기일 겁니다.
 
 
 [="abcde".shuffle().toUpper()]
 
 BCEDA
 
 
 
 
 2. 펑셔널 패러다임
 
 책을 읽기는 했는데 별로 기억이 안나고
 
 버그의 원천 중의 하나는 변수다.
 
 변수를 만들거나 변수값을 바꾸는 코드는 버그를 발생시킬 수 있다.
 
 요즘 언어들은 바뀔리 없는 데이터라면 그렇다고 타입선언을 할 수 있게 해줍니다.
 
 (상수랑 뭐가 다른거지?)
 
 
 뷰 영역은 백엔드에서 전달 받은 데이터를 변경하지 않고 
 
 전부 불변식(immutable)으로 활용합니다.
 
 변수의 값 자체를 바꾸는 일이 없습니다
 
 가능한 메소드로 좀 꾸미는 일을 하고 출력하는게 전부입니다.
 
 
 
 
 3. 표준문법
 
 하자가 없다면 많은 사람들이 알고 사용하는 문법이 표준문법 아닐까요.
 
 Tplus는 컬렉션으로 JSON 형식을 채택했는데 
 
 PHP쪽에서는 {} 와 [] 구분이 의미가 없어서
 
 {} [] 아무거나 써도 되게 해놓았습니다.
 
 
 
 
 4. 마크업언어
 
 뷰 영역은 클래스를 선언하거나 무거운 코딩하는 곳이 아니고 
 
 서버사이드 언어는 조연으로서 태그 형식으로 존재해야 합니다.
 
 클라이언트 사이드 프레임워크와 충돌하지 않아야 하고
 
 서버사이드답게 [ ] 대괄호를 태그로 선택했고
 
 템플릿언더바로부터 이어받은 명령어 다섯 개 중 하나가 붙었을 때 
 
 Tplus 태그가 됩니다
 
 [= ][@ ] [? ] [: ] [/]
 
 
 
 
 5. 남은 과제
 
 런타임에러처리, 디버깅환경개선, 유닛테스트첨부, vscode용 플러그인
 
 할 일이 많은데 지금도 템플릿언더바 때보다는 훨씬 좋습니다.
 
 정식버전은 23년 1분기 내로 업로드하겠습니다.
 
  |  
  |  
  |  
| 초보 | 
기존 프로젝트에 사용되었던 템플릿 언더바를 tplus 베타로 교체해서 기능 구현하는데 문제는 없을까요? 정식버전으로 작업하면 너무 좋겠지만 기한이 있는 프로젝트라서요 ㅠㅠ | 
| 23-01-18 11:03 | 
  | 
 
 
 | 
 
  |  
| 관리자 | 
템플릿언더바에 있던 기능(설명서 4,5)들이 많이 제외되었기도 하고 새 프로젝트나 개인 프로젝트에 적용하시는 편이 좋을 거 같습니다. | 
| 23-01-18 12:02 | 
  | 
 
 
 | 
 
  |  
| 베르사체 | 
기대됩니다. | 
| 23-02-09 16:24 | 
  | 
 
 
 | 
 
  |  
| 관리자 | 
열심히 하겠습니다 | 
| 23-02-09 18:09 | 
  | 
 
 
 | 
 
  |  
  |  
  |  
  |  
| 
 | 
 
 
 | 
  | 
 
 
 |