[이론] PHP & JavaScript에서 희소 배열(Sparse Array) 이해 및 해결 방법
·
백엔드/PHP
1. 개요PHP와 JavaScript 모두 배열을 다룰 때 중간 인덱스나 요소가 비어 있는 “희소 배열(Sparse Array)” 구조를 지원합니다.희소 배열은 연속된 인덱스를 가정한 반복 처리나 JSON 직렬화 시 예상치 못한 동작, 성능 저하를 일으킬 수 있습니다.2. PHP에서의 희소 배열2-1. 발생 사례$arr[1000] = '값'; 처럼 비연속 인덱스를 직접 할당할 때array_push($arr, $val) 호출 시 내부적으로 현재 최대 키+1 위치에 삽입될 때unset($arr[$key]) 로 요소 삭제 후 자동 재인덱싱이 이루어지지 않을 때2-1. 해결 방법array_values($arr) 로 값만 추출해 0부터 순차 인덱스 재생성ksort($arr) 후 array_values($arr) ..
[Modern PHP] PHP PDO: PHP 데이터베이스 접근의 표준 인터페이스
·
백엔드/PHP
PHP PDO (PHP Data Objects)는 PHP에서 데이터베이스에 접근하기 위한 경량의 추상화 계층입니다. 다양한 데이터베이스에 동일한 API를 제공하며, 안전하고 효율적인 데이터베이스 작업을 가능하게 합니다. 이 글에서는 PDO의 개념, 장점, 사용법 및 주요 기능에 대해 자세히 설명하겠습니다.1. PDO란?PDO는 PHP에서 데이터베이스와 상호작용하기 위한 표준 인터페이스입니다. PDO를 사용하면 다양한 데이터베이스를 동일한 방식으로 처리할 수 있으며, SQL Injection 방지를 위한 강력한 기능을 제공합니다.PDO의 특징다중 데이터베이스 지원: MySQL, PostgreSQL, SQLite, Microsoft SQL Server 등 다양한 데이터베이스 지원.추상화 계층 제공: 데이터베..
[Modern PHP] DBLogger와 FileLogger를 활용한 로그 관리 시스템
·
백엔드/PHP
1. DBLogger 클래스DBLogger는 데이터베이스 테이블에 로그를 저장하기 위한 클래스입니다. 로그 데이터를 구분하여 액션 로그와 세션 로그로 나누어 저장할 수 있습니다.1-1. 주요 기능:테이블 유효성 검증 (validateTable)데이터베이스에 로그 테이블이 존재하는지 확인하고, 없으면 에러를 기록합니다.로그 생성 (createLog)액션 로그(createActionLog)와 세션 로그(createSessionLog)를 처리합니다.디바이스 타입 분석 (getDeviceType)사용자 에이전트를 기반으로 디바이스 유형(모바일, 태블릿, 데스크톱)을 판별합니다.2. FileLogger 클래스FileLogger는 로그 메시지를 파일로 저장하는 역할을 수행합니다. 디렉토리와 파일 관리를 통해 효율적..
[Modern PHP] PDO로 간단하고 안전한 데이터베이스 연동: 싱글톤 패턴과 쿼리 빌더 구현
·
백엔드/PHP
1. 개요싱글톤 패턴으로 데이터베이스 연결 관리데이터베이스 연결을 효율적으로 관리하기 위해 싱글톤 패턴을 사용한 Database 클래스를 소개합니다.이 클래스는 PDO를 사용하여 안전하고 성능 좋은 데이터베이스 연결을 제공합니다.추가로 QueryBuilder를 통해 데이터를 효율적으로 CRUD(생성, 읽기, 업데이트, 삭제) 할 수 있는 구조도 함께 제공합니다.2. Database 클래스: PDO 기반 데이터베이스 연결데이터베이스 연결 관리 클래스입니다.주요 기능:싱글톤 패턴으로 단일 인스턴스 유지.PDO를 사용해 SQL 인젝션 방지 및 성능 최적화.간단한 테스트 연결 메서드 제공.주요 메서드 설명:__construct: 데이터베이스 연결 초기화.getInstance: 싱글톤 인스턴스 반환.getConn..