PHP에서 try-catch 구문을 통한 예외처리와 확장방법

try-catch문은 프로그램 실행 중 예외가 발생했을 때, 개발자가 이를 직접 처리할 수 있도록 제공하는 구문입니다. C++이나 Java 등의 언어에 등장한지는 제법 시간이 흘렀지만, PHP에서는 5.1.0 버전에 들어와서야 사용할 수 있게 되었습니다.

예외(Exception)특별한 처리가 필요한 이례적인 상황을 이야기합니다. PHP를 기준으로 하면, $_POST 파라메터로 받은 어떤 값이 나눗셈에서 분모로 들어가는 소스코드를 예로 들 수 있겠습니다. 이러한 코드에서 $_POST 값이 0인 상황이 벌어지면, 해당 값을 별도의 값으로 치환하거나 이전 웹페이지로 되돌려보내 사용자의 새로운 입력을 요구한다던가 하는 특별한 처리가 필요할 것입니다.

기본적으로 예외처리는 if-else문 만으로도 가능합니다. 그러나 예외가 발생했을 때의 처리방법에 일관성이 있을 때는 try-catch문을 사용하여 무척 간결한 코드를 작성할 수 있습니다. 금번 포스팅에서는 간단한 예제를 통해서 try-catch문의 기본적인 성질과 사용법, 확장방법에 대하여 설명합니다.

Continue reading

자바스크립트의 전역객체(Global Object)

자바스크립트는 최상위에 1개의 전역객체(Global Object)를 가진다.

자바스크립트는 소스코드를 실행하기 전에, 최상위에 위치한 전역객체(Global Object)를 만듭니다. (Math나 Date를 비롯한 몇몇 특별한 객체를 제외한다면) 자바스크립트의 모든 객체와 값들은 이 전역객체의 아래에 자손(descendants)으로 위치하게 됩니다. 전역객체는 전체 코드에서 단 1개만 존재할 수 있으며, new 연산자를 이용하는 등의 방법으로 새롭게 만들 수 없습니다.

이 전역객체의 이름은 자바스크립트를 사용하는 환경에 따라 얼마든지 달라질 수 있습니다. 이를테면 웹 브라우저에서 사용되는 자바스크립트의 전역객체는 우리가 잘 아는 window라는 이름의 객체입니다. 한편 자바스크립트를 사용하는 서버인 Node.js에서는 global이라는 이름의 전역객체가 있습니다.

Continue reading

자바스크립트 DOM을 이용한 애니메이션 없는 슬라이더

슬라이더(Slider)는 사용자의 조작 또는 타이머에 따라 페이지를 넘기듯 콘텐츠를 보여주는 형태의 UI를 부르는 말입니다. 한정된 웹 브라우저 화면에 여러 콘텐츠를 표시하기 위해서는 슬라이더만한 것이 없습니다.

검색엔진을 이용하면 자바스크립트나 jQuery를 이용해서 Slide 애니메이션이나 Fade 효과가 들어간 슬라이더 모듈을 많이 찾아볼 수 있습니다. 그러나 아이러니하게도 애니메이션 없이 작동하는 슬라이더는 찾아보기 어렵습니다. 그렇다고 소스코드를 열어 커스터마이징을 하자니, 이런 모듈들은 내부구조가 대체로 복잡한 편이라서 흥미도 의욕도 나지 않는 경우가 많습니다.

이번 포스팅에서는 자바스크립트 DOM 객체에 접근해 간단하게 구현한 애니메이션 없는 슬라이더를 소개합니다. 먼저 예제 소스코드부터 공개합니다.

Continue reading

SNS 내보내기(공유하기) 기능 구현하기

웹페이지에 있는 글이나 블로그 포스팅, 덧글 등의 콘텐츠를 다양한 소셜 네트워킹 서비스로 내보내는 기능(export)을 구현해야할 때가 있습니다. 최근의 게시판이나 블로그 서비스에서 대부분 기본적으로 제공하고 있는 기능이기도 하지요. 이번 포스팅에서는 각 서비스별로 웹 페이지에 있는 글을 내보낼 수 있는 방법을 정리하고, 이를 자바스크립트 코드로 정리하였습니다.

Continue reading

PHP에서 배열이 색인 배열인지 연관 배열인지 구별하기

흔히 배열은 색인 배열(Indexed Array)과 연관 배열(Associative Array)로 구분됩니다. 색인 배열은 키(key)가 0부터 시작하여 순차적으로 증가하는 정수인 배열을 의미합니다. 이 때문에 색인 배열은 순차 배열(Sequential Array)이라고 부르기도 합니다. 그 외의 모든 배열은 연관 배열로 분류할 수 있습니다.

사실 PHP는 내부적으로 색인 배열과 연관 배열을 구분하지 않습니다. 이 점은 PHP Manual의 Arrays 항목에서도 언급하고 있는 내용입니다.

PHP arrays can contain integer and string keys at the same time as PHP does not distinguish between indexed and associative arrays.

그럼에도 종종 어떤 배열이 색인 배열과 같은 형태인지 연관 배열인지를 알아내야 하는 경우가 있습니다. 웹 상에서 코드서칭을 해보면 무척 다양한 해법들을 찾아볼 수 있는데요. 다소 복잡한 방법이 있는가하면, 무릎을 탁치게 하는 방법들도 존재합니다. 금번 포스팅에서는 그 중에 몇 가지를 간추려 소개하고자 합니다.

Continue reading