Commit 09c3224c authored by platyhouse's avatar platyhouse

# Git Subtree 관리 스크립트 및 ptyLibrary_PHP 문서 추가

## Git Subtree 관리 도구

### ptyGitSubTreeAdd
- ptyGitSubTreeAdd: Git subtree를 새로 추가하는 스크립트
  - 폴더명, remote 주소, 브랜치명을 인자로 받아 subtree 추가
  - 이미 존재하는 폴더 체크 및 remote 자동 등록/업데이트 기능
  - --squash 옵션으로 히스토리 압축하여 병합
  - 실패 시 등록된 remote 자동 제거

### ptyGitSubTreePull
- ptyGitSubTreePull: 기존 subtree를 원격 저장소에서 업데이트하는 스크립트
  - 폴더명과 브랜치명을 인자로 받아 subtree pull 수행
  - 폴더 존재 여부 및 remote 등록 여부 검증
  - --squash 옵션으로 히스토리 압축

### ptyGitSubTreePush
- ptyGitSubTreePush: subtree 변경사항을 원격 저장소로 push하는 스크립트
  - 폴더명과 브랜치명을 인자로 받아 subtree push 수행
  - 폴더 존재 여부 및 remote 등록 여부 검증

## ptyLibrary_PHP 문서화

### CLAUDE.md
- ptyLibrary_PHP/CLAUDE.md: Claude Code를 위한 라이브러리 가이드 문서 추가
  - 프로젝트 구조 및 디렉토리 설명
  - ptyMysql 데이터베이스 클래스 사용법 (Fluent 인터페이스, 날짜 필터, prepared statement)
  - 공통 유틸리티 함수 목록 (유효성 검사, 배열/문자열 처리, HTTP, 디버그)
  - CLI 로깅 컴포넌트 설명
  - 코드 컨벤션 (네임스페이스, 메소드 체이닝, 전역 상태)
parent 98a97fab
#!/bin/bash
# ptyGitSubTreeAdd - Git subtree add 스크립트
# 사용법: ptyGitSubTreeAdd <폴더명> <remote주소> [브랜치명]
# 예시: ptyGitSubTreeAdd ptyLibrary_PHP https://gitlab.platyhouse.com/platyhouse/ptyLibrary_PHP
if [ -z "$1" ] || [ -z "$2" ]; then
echo "사용법: ptyGitSubTreeAdd <폴더명> <remote주소> [브랜치명]"
echo "예시: ptyGitSubTreeAdd ptyLibrary_PHP https://gitlab.platyhouse.com/platyhouse/ptyLibrary_PHP"
exit 1
fi
FOLDER_NAME="$1"
REMOTE_URL="$2"
BRANCH="${3:-main}"
# 폴더가 이미 존재하는지 확인
if [ -d "$FOLDER_NAME" ]; then
echo "오류: '$FOLDER_NAME' 폴더가 이미 존재합니다."
exit 1
fi
# remote 등록 (이미 있으면 URL 업데이트)
if git remote get-url "$FOLDER_NAME" > /dev/null 2>&1; then
git remote set-url "$FOLDER_NAME" "$REMOTE_URL"
echo "Remote '$FOLDER_NAME' URL 업데이트됨"
else
git remote add "$FOLDER_NAME" "$REMOTE_URL"
echo "Remote '$FOLDER_NAME' 등록됨"
fi
echo ""
echo "Subtree 추가 중..."
echo " 폴더: $FOLDER_NAME"
echo " Remote: $FOLDER_NAME ($REMOTE_URL)"
echo " 브랜치: $BRANCH"
echo ""
git subtree add --prefix="$FOLDER_NAME" "$FOLDER_NAME" "$BRANCH" --squash
if [ $? -eq 0 ]; then
echo ""
echo "완료: '$FOLDER_NAME' subtree가 추가되었습니다."
else
echo ""
echo "오류: subtree 추가에 실패했습니다."
# 실패 시 remote 제거
git remote remove "$FOLDER_NAME" 2>/dev/null
exit 1
fi
#!/bin/bash
# ptyGitSubTreePull - Git subtree pull 스크립트
# 사용법: ptyGitSubTreePull <폴더명> [브랜치명]
# 예시: ptyGitSubTreePull ptyLibrary_PHP
if [ -z "$1" ]; then
echo "사용법: ptyGitSubTreePull <폴더명> [브랜치명]"
echo "예시: ptyGitSubTreePull ptyLibrary_PHP"
exit 1
fi
FOLDER_NAME="$1"
BRANCH="${2:-main}"
# 폴더가 존재하는지 확인
if [ ! -d "$FOLDER_NAME" ]; then
echo "오류: '$FOLDER_NAME' 폴더가 존재하지 않습니다."
exit 1
fi
# remote가 등록되어 있는지 확인
if ! git remote get-url "$FOLDER_NAME" > /dev/null 2>&1; then
echo "오류: '$FOLDER_NAME' remote가 등록되어 있지 않습니다."
echo "먼저 ptyGitSubTreeAdd로 subtree를 추가하거나, git remote add로 remote를 등록하세요."
exit 1
fi
echo "Subtree pull 중..."
echo " 폴더: $FOLDER_NAME"
echo " 브랜치: $BRANCH"
echo ""
git subtree pull --prefix="$FOLDER_NAME" "$FOLDER_NAME" "$BRANCH" --squash
if [ $? -eq 0 ]; then
echo ""
echo "완료: '$FOLDER_NAME' subtree가 업데이트되었습니다."
else
echo ""
echo "오류: subtree pull에 실패했습니다."
exit 1
fi
#!/bin/bash
# ptyGitSubTreePush - Git subtree push 스크립트
# 사용법: ptyGitSubTreePush <폴더명> [브랜치명]
# 예시: ptyGitSubTreePush ptyLibrary_PHP
if [ -z "$1" ]; then
echo "사용법: ptyGitSubTreePush <폴더명> [브랜치명]"
echo "예시: ptyGitSubTreePush ptyLibrary_PHP"
exit 1
fi
FOLDER_NAME="$1"
BRANCH="${2:-main}"
# 폴더가 존재하는지 확인
if [ ! -d "$FOLDER_NAME" ]; then
echo "오류: '$FOLDER_NAME' 폴더가 존재하지 않습니다."
exit 1
fi
# remote가 등록되어 있는지 확인
if ! git remote get-url "$FOLDER_NAME" > /dev/null 2>&1; then
echo "오류: '$FOLDER_NAME' remote가 등록되어 있지 않습니다."
echo "먼저 ptyGitSubTreeAdd로 subtree를 추가하거나, git remote add로 remote를 등록하세요."
exit 1
fi
echo "Subtree push 중..."
echo " 폴더: $FOLDER_NAME"
echo " 브랜치: $BRANCH"
echo ""
git subtree push --prefix="$FOLDER_NAME" "$FOLDER_NAME" "$BRANCH"
if [ $? -eq 0 ]; then
echo ""
echo "완료: '$FOLDER_NAME' subtree가 push되었습니다."
else
echo ""
echo "오류: subtree push에 실패했습니다."
exit 1
fi
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 개요
ptyLibrary_PHP는 PlatyHouse 프레임워크용 PHP 유틸리티 라이브러리입니다. 데이터베이스 작업, HTML 생성, CLI 유틸리티, 파일 관리, 웹 크롤링, 미디어 처리를 위한 재사용 가능한 컴포넌트를 제공합니다. 모든 코드는 `platyFramework` 네임스페이스를 사용합니다.
## 프로젝트 구조
```
ptyLibrary_PHP/
├── ptyLibrary.php # 메인 진입점 - 모든 코어 모듈 include
├── common/ # 핵심 유틸리티 함수 (ptyArray, ptyString, 디버그, HTTP)
├── database/ # MySQL 데이터베이스 추상화 레이어 (ptyMysql 클래스)
├── dbTableList/ # 데이터 목록 렌더링 및 페이지네이션
├── forms/ # 파일 업로드 관리 (ptyFormFileManager)
├── cli/ # CLI 유틸리티 및 ANSI 컬러 (ptyCliColor, ptyCliLog)
├── crawling/ # 웹 스크래핑 유틸리티 (ptyCrawling)
├── media/ # 미디어 처리 (ptyYoutubePlay)
├── postBlog/ # XML-RPC 블로그 포스팅 (네이버, TypePad)
└── external/ # 외부 라이브러리 (PhpSpreadsheet, simpleHtmlDom, html2text)
```
## 주요 컴포넌트
### 데이터베이스 (ptyMysql)
Fluent 인터페이스 방식의 쿼리 빌더:
- `addSelect()`, `addFrom()`, `addJoin()`, `addWhere()`, `addWhereOr()`
- `addSet()`, `addOrderBy()`, `setLimit()`, `addGroupBy()`
- `insert()`, `update()`, `delete()`, `sql_query()`, `sql_fetch()`, `sql_list()`
- 날짜 필터: `getWhere이번달()`, `getWhere지난달()`, `getWhere1개월전부터()`
- Prepared statement 지원 (`binds` 파라미터), 쿼리 캐싱, 슬로우 쿼리 감지
헬퍼 함수: `mre()` (이스케이프), `mrea()` (따옴표 포함 이스케이프), `mreb()` (백틱 이스케이프)
### 공통 유틸리티 (common/common.php)
- **유효성 검사**: `ptyCheckEmpty()`, `ptyCheckNull()`, `ptyCheckEmptys()`
- **배열 처리**: `ptyTransformArray()`, `ptyGetMagicArray()`, `ptyArrayValueToKey()`
- **문자열 처리**: `ptyCutStr()`, `ptyCutLength()`, `ptyTrim()`, `ptyGetMiddleStr()`
- **HTTP**: `ptyGetCurrentUrl()`, `ptyGetUrlContent()`, `ptyCurlGet()`, `ptyCurlPost()`
- **디버그**: `ptyDebug()`, `ptyDebugXmp()`, `ptyDebugBackTrace()`, `ptyShowCallstack()`
- **JSON 응답**: `ptyJsonReturn()`, `ptyJsonReturnTrue()`, `ptyJsonReturnFalse()`
- **환경 감지**: `ptyIsCli()`, `ptyIsPC()`, `ptyIsCurl()`
- **크론 락**: `ptyCheckCronRunningDuplicate()`, `ptyEndCronRunningDuplicate()`
### CLI 로깅 (ptyCliLog)
컬러 터미널 출력, 로그 타입: 'info', 'success', 'warning', 'error', 'url', 'verbose', 'data', 'response'
## 사용 예시
```php
<?php
namespace platyFramework;
require_once("ptyLibrary.php");
// 데이터베이스 사용
$db = new ptyMysql($host, $user, $pass, $dbname);
$db->addSelect("*")->addFrom("users")->addWhere("active", 1);
$users = $db->sql_list();
```
## 코드 컨벤션
- **네임스페이스**: 모든 코드는 `platyFramework` 네임스페이스 사용
- **메소드 체이닝**: setter 메소드는 `$this` 반환
- **전역 상태**: 공유 설정에 `$GLOBALS['platyFramework']` 사용
- **Composer 미사용**: 직접 require를 통한 파일 기반 오토로딩
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment