웹 개발 메모장

[PHP] 자바와 비교해서 php 맛보기 본문

옛날../php

[PHP] 자바와 비교해서 php 맛보기

도로롱주 2017. 12. 25. 17:43




자바와 비교해본 php 맛보기



애초에 웹 개발 목적으로 만들어진 언어라고 합니다.

자바와 비교했을 때 좀 더 느슨한 언어이며, 그에따라 개발할 때 편하고 자유로울 수 있겠지만 그만큼 프로젝트 규모가 커졌을 때 정해야할 약속의 필요성이 많아지는 것 같습니다. 그렇기 때문에 php는 대규모 사이트 보다는 개인 웹사이트 제작에 더욱 어울리는 것 같습니다.



php가 웹 목적 언어라는 느낌을 보여주는 내장 함수들


1
2
3
4
5
6
7
8
9
10
<?php
    // HTML태그가 들어간 문자열을 일반 문자열로 처리하여 반환하는 함수
    htmlspecialchars(문자열, 옵션);
    
    // 문자열에서 HTML태그를 제거하여 반환하는 함수
    strip_tags(문자열, 허용할 태그);
    
    // 문자열에서 \n 을 &amp;lt;br/&amp;gt; 로 변환하여 반환하는 함수
    nl2br(문자열);
?>
cs




변수 선언


선언한 변수명 앞에 자료형을 명시하지 않습니다. 

자바와 비교하면 자바에서는 int a = 10; 처럼 a라는 이름의 int형 변수를 저장할 메모리 공간을 할당하고 그 안에 10이라는 값을 넣는다고 하면

php에서는 a = 123 처럼 123 이라는 int형 값을 메모리 공간을 할당해 값을 저장하고 그 메모리공간을 a가 가리키는 방식이라고 합니다.


1
2
3
4
$num = 123;
$num2 = 123.4;
$str = "hello";
$isTrue = True;
cs

[php 변수 선언 예제]




배열


php 에서의 배열은 자바의 배열과 큰 차이가 있습니다.

자바에서 배열은 그 길이를 명시하고 사용합니다. 길이가 동적으로 변해야 하는 경우 자바에서 List 클래스를 이용합니다.

자바에서도 배열은 keyvalue의 형태로 볼 수 있습니다. 여기서 자바에서 배열의 keyindex 입니다.

1
2
3
4
5
6
7
8
9
10
11
//자바의 배열 생성 방법 예시
int arr[] = new int[3];
arr[0= 1;
arr[1= 2;
arr[2= 3;
 
//자바의 리스트 생성 방법 예시
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
cs



배열의 요소들은 각 순서대로 0부터 길이-1 까지의 index를 갖고있습니다. 자바에서 key, value 쌍을 정해서 사용하고 싶은 경우 보통 map 클래스를 이용합니다. 파이썬에서의 딕셔너리 자료형과 같은 경우 입니다.


1
2
3
4
5
//자바에서 map 사용 예시
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("key1"1);
map.put("key2"2);
map.put("key3"3);
cs


php에서의 배열은 위 두가지 특징을 모두 갖고있습니다.

길이를 정해두지 않고 배열에 요소를 추가하거나 삭제할 수 있으며 index 말고 다른 key 값을 부여할 수 있습니다.


1
2
3
4
5
6
7
<?php
    //PHP 에서의 배열 사용 예시
    $arr[] = 1;
    $arr[] = 2;
    $arr["key1"= 3;
    $arr["key2"= 4;
?>
cs



뿐만 아니라 배열 내 요소를 정렬해주는 함수등 자바에서는 개발자가 따로 구현해야 했던 부분들을 미리 구현해 놓은 여러 배열 관련 내장 함수들이 존재합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    //PHP 에서의 배열 내장 함수들
    implode(',',$arr); //배열을 string으로 바꿔주는데 요소 간 ',' 추가
    explode(','$str); //문자열을 배열로~ 요소는 ',' 기준으로 추가
 
    list($a,$b,$c= $arr//배열의 데이터를 변수에 할당하기
 
    sort($arr, flag); // 배열의 요소들을 정렬(rsort, assort, ksort, krsort 등)
 
    array_push($arr, value); // 배열의 마지막에 요소를 넣기
    array_pop($arr); // 배열의 마지막 요소를 꺼냄
 
    array_shift($arr); // 배열의 맨 앞 요소를 꺼내기
    array_unshift($arr, value); // 배열의 맨 앞에 요소를 추가
 
    array_slice($arr5,3); //배열을 index가 5인 요소부터 3개의 요소까지 
?>
cs




정규 표현


php에서도 정규표현식을 사용해 문자의 패턴이나 숫자의 패턴을 메타 문자라는 기호를 조합하여 표현하고

문자열 등이 해당 패턴에 부합하는지 판단하는 함수를 사용할 수 있습니다.


1
2
3
4
5
6
7
8
9
<?php
    // preg_match() 함수 사용 예시
    $num = "12345";
    if(preg_match("/[0-9]+/"$num)){
        print "숫자입니다.";
    }else {
        print "숫자가 아닙니다."
    }
?>
cs




외부 명령 실행


php에서는 시스템에 내장된 명령을 실행할 수 있습니다.

실행하기 위한 함수로는 exec(), system(), `` 등이 있습니다. (여기서 ` 는 키보드의 tab 키 위의 키 입니다.)


1
2
3
4
5
6
7
8
9
10
<?php
    // exec(명령어); 명령어를 실행하고 결과의 마지막 행을 문자열로 반환합니다.
    $result = exec("/bin/ls -l /etc");
 
    // system(명령어); 명령어를 실행 및 출력하고 결과의 마지막 행을 문자열로 반환합니다.
    $result = system("/bin/ls -l /etc");
 
    // `명령어`; 명령어를 실행하고 결과의 모든 행을 문자열로 반환합니다.
    $result = `/bin/ls -/etc`;
?>
cs




트레이트(Trait)


php에서도 함수가 있고 클래스가 있으며 자바와 매우 비슷합니다.

php의 클래스에도 상속(extends), 접근 제한(public, protected, private), final, static 등 이 있으며 사용 방법도 동일합니다.

여기에 더해 php에는 트레이트(Trait) 라는 것이 있습니다.

함수들을 정의한 코드를 trait 안에 넣어두면 use 트레이트명 을 통해 클래스 내부에 함수들을 정의 할 수 있습니다.

이는 상속과는 다른 개념으로 trait 내부에서 정의한 함수들을 클래스의 내부 함수로 사용하도록 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    // 덧셈 뺄셈 함수들을 trait로 선언
    trait myTrait {
        public function plus_num($a$b){
            return $a+$b;
        }
        public function minus_num($a$b){
            return $a-$b;
        }
    }
 
    //클래스 내부에 trait를 활용해 함수 추가
    class Calc {
        use myTrait;
    }
?>
cs




Comments