UI(네이티브 UI)

UI(네이티브 UI)

PHP로 데스크톱용 네이티브 UI를 만들어야 한다면 UI 확장이 후보가 돼요. UI 확장은 libui를 감싸서, 네이티브한 느낌(룩앤필)의 사용자 인터페이스를 크로스 플랫폼으로 개발할 수 있는 객체 지향 API를 제공해요.

출처: UI

본문

경고: 이 확장은 실험적(EXPERIMENTAL) 상태예요. 이 확장의 동작은 함수 이름을 포함해 향후 PHP 릴리스에서 예고 없이 바뀔 수 있고, 사용에 따른 책임은 개발자 본인에게 있어요.

UI 확장은 창·컨트롤·메뉴·드로잉을 아우르는 여러 네임스페이스로 구성돼요.

기본 구조 (UI\ 네임스페이스)

  • UI\Window — 창을 나타내는 클래스예요. show되지 않은 창을 만들고 크기·제목·테두리·여백을 지정하며, 메시지 박스(msg), 오류 박스(error), 열기/저장 다이얼로그(open, save)를 띄울 수 있어요.
  • UI\Control — 모든 컨트롤의 기반 클래스예요. show/hide, enable/disable, setParent 등을 제공해요.
  • UI\Menu / UI\MenuItem — 메뉴와 메뉴 항목을 만들어요.
  • UI\Area — 직접 그리기(draw) 영역으로, 마우스·키·드로잉 콜백을 지원해요.
  • UI\Executor — 실행 스케줄러로 콜백을 예약·반복 실행해요.
  • UI\Point / UI\Size — 좌표(x, y)와 크기(width, height)를 나타내는 값 타입이에요.

컨트롤 (UI\Controls\ 네임스페이스)

다양한 컨트롤이 준비되어 있어요.

  • Tab, Check, Button, ColorButton, Label, Entry, MultilineEntry, Spin, Slider, Progress, Separator, Combo, EditableCombo, Radio, Picker
  • 배치(arrangement): Form, Grid, Group, Box

각 컨트롤은 대체로 __construct, 값을 읽거나 쓰는 getter/setter, 그리고 상태 변화를 알리는 콜백(onClick, onChange, onToggle 등)으로 이루어져요.

드로잉 (UI\Draw\ 네임스페이스)

면적(Area)에 그림을 그리기 위한 클래스들이에요.

  • UI\Draw\Pen — 경로를 채우고(fill), 윤곽을 그리고(stroke), 텍스트를 씁니다(write)
  • UI\Draw\Path — 사각형·선·호·베지어 곡선으로 도형을 구성해요
  • UI\Draw\Matrix — 회전·크기 조절·이동·기울이기 같은 변환을 적용해요
  • UI\Draw\Color, UI\Draw\Stroke, UI\Draw\Brush(+ Gradient 계열) — 색·선·채우기 브러시를 나타내요
  • UI\Draw\Text\Layout, UI\Draw\Text\Font(+ Descriptor) — 텍스트 배치와 글꼴을 다뤄요

UI 함수·상수

  • UI\run — UI 이벤트 루프에 진입해요
  • UI\quit — UI 루프를 종료해요
  • UI\Draw\Text\Font\fontFamilies — 사용 가능한 글꼴 패밀리 목록을 가져와요
  • 상수: UI\Draw\Text\Font\Weight, UI\Draw\Text\Font\Italic, UI\Draw\Text\Font\Stretch, UI\Draw\Line\Cap, UI\Draw\Line\Join, UI\Key
  • 예외: UI\Exception\InvalidArgumentException, UI\Exception\RuntimeException

더 알아보기

설치 요구 사항은 Installing/Configuring 문서를 확인해 보세요. 각 클래스와 메서드의 구체적인 사용법은 클래스별 레퍼런스 문서에서 이어서 보시면 돼요. 다만 확장 상태가 실험적이므로 실제 프로젝트에 도입하기 전에 이 점을 꼭 감안하세요.