웹 개발 메모장
[PHP] 자바와 비교해서 php 맛보기 본문
자바와 비교해본 php 맛보기
애초에 웹 개발 목적으로 만들어진 언어라고 합니다.
자바와 비교했을 때 좀 더 느슨한 언어이며, 그에따라 개발할 때 편하고 자유로울 수 있겠지만 그만큼 프로젝트 규모가 커졌을 때 정해야할 약속의 필요성이 많아지는 것 같습니다. 그렇기 때문에 php는 대규모 사이트 보다는 개인 웹사이트 제작에 더욱 어울리는 것 같습니다.
php가 웹 목적 언어라는 느낌을 보여주는 내장 함수들
1 2 3 4 5 6 7 8 9 10 | <?php // HTML태그가 들어간 문자열을 일반 문자열로 처리하여 반환하는 함수 htmlspecialchars(문자열, 옵션); // 문자열에서 HTML태그를 제거하여 반환하는 함수 strip_tags(문자열, 허용할 태그); // 문자열에서 \n 을 &lt;br/&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 클래스를 이용합니다.
자바에서도 배열은 key와 value의 형태로 볼 수 있습니다. 여기서 자바에서 배열의 key는 index 입니다.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($arr, 5,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 -l /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 |
'옛날.. > php' 카테고리의 다른 글
[php] array_walk() 배열의 각 요소에 같은 함수 적용시키기 (0) | 2018.03.21 |
---|---|
[php] 웹사이트 루트 경로 찾기 ($_SERVER['DOCUMENT_ROOT']) (0) | 2018.01.29 |