PHP
기본
<?php
// 태그내에서는 php코드, 그 외에는 HTML
print 4;
// 대소문자 구별 X
PRINT 5;
/*여러 줄 주석*/
// 한 줄 주석(권장)
# 한 줄 주석
$variable = true; // 변수
$a = 1<=>3 // strcmp와 비슷한 연산자, 모든 자료형에 사용 가능
?>
조건식&반복문&try-catch
C언어와 동일하게 사용하면 된다.
사용자 예외 처리
set_exception_handler에 함수명을 문자열로 전달해 해당 함수에서 예외를 처리하도록 한다.
문자열
PHP의 문자열 처리는 C언어와 비슷하게 처리하면 된다.
print "abc\nedf"; // 이스케이프 문자로 개행
print 'abc
edf'; // 작은 따옴표 내에서는 개행 가능
print <<< HTMLBLOCK
<h3> 다량의 HTML 블록 </h3>
HTMLBLOCK;
print '문자열'.'연결'; //.도 연산자이기 때문에 .=같은 축약형도 있다.
print "변수의 값은 {$variable}이다.";
// 문자열 끼리 비교 연산이 가능하며, 사전 순으로 비교한다.
함수 목록
- trim : 양 끝 공백 제거
- strlen : 문자열 길이
- strcmp : 문자열 비교
- strcasecmp : 두 문자열을 대소문자 구분 없이 비교
- printf : 텍스트 포맷팅
- wcwords : 단어의 첫 글자만 대문자 나머지 소문자
- substr : 문자열 추출, 문자열, 위치, 바이트 순으로 매개변수가 들어간다.
- str_replace : 문자열 치환
- mb_strlen : 멀티바이트 문자열의 길이(많은 함수가 멀티바이트를 대상으로 사용할 때에는 mb_접두어가 붙는다.)
배열
$array1 = array(0=>1, 1=>2, 2=>3); //배열은 key=>value의 형태
$array2 = ['1'=>1, '2'=>2, '3'=>3]; //단축 문법
$array2['1'] = 10; //배열 요소 사용
foreach($array1 as $key => $value){
// 배열 순회 $value를 변경해도 원본 배열에는 영향이 없다.
// 숫자키라면 $key =>를 생략할 수 있다
// foreach는 배열에 원소가 추가된 순서를 따른다.
}
함수 목록
- count : 배열 크기
- array_key_exists : 키 존재 여부
- in_array : 값 존재 여부
- array_search : 값으로 키 찾기
- unset : 원소 제거
- implode : 배열의 모든 값을 구분 문자를 넣어 하나의 문자열로 생성
- explode : 문자열을 구분자로 나눠 배열 생성
- sort : 값 기준 정렬, 키를 새로 할당해 숫자키 배열에만 사용 가능
- asort : 값을 기준으로 정렬, 키가 유지됨
- ksort : 키를 기준으로 정렬
- rsort/arsort/krsort : 역순 정렬
함수
// 매개변수나 함수의 오른쪽에 타입을 붙여 제약조건을 추가할 수 있다.
function func(int $argu = 123) : int
{
$GLOBALS['outer'] = 123; // 전역 변수(권장)
global $outer; // 지역 변수 => 전역 변수
$variable = 123; // 지역 변수
//매개변수에 기본값 지정가능, 기본값을 지정하면 그 매개변수는 선택사항이 된다.
return $argu * 2;
}
require 'some.php'; // 다른 파일 읽기, 현재 파일은 이 파일에 있는 함수를 실행할 수 있다.
클래스
namespace name;
// 클래스 선언(상속)
class _Class extends _Parent{
public $name;
public function __construct(){
//생성자
_Parent::__construct(); //상속 받은 메소드 사용
}
public function func($argu){
//->로 내부 요소 접근
//$this는 현재 객체
if(is_array($argu)){
throw new Exception('예외 발생');
}
return $argu.$this->name;
}
public static function staticFunc(){
//정적 메소드
print 123;
}
}
//클래스 생성
$Instance = new _Class;
//정적 메소드 호출
_Class::staticFunc();
//네임 스페이스 사용
\name\_Class::staticFunc();
use name as myname; //using namespace std 같은 것
파일 처리
- file_get_contents : 파일을 문자열로 읽기
- file_put_contents : 문자열을 파일에 쓰기
- file : 파일의 일부를 다룰 때 사용 foreach를 통해 1줄 씩 가져올 수 있다.
- fopen : 모드를 사용해서 파일 열기
- feof : 파일이 eof면 true
- fgets : 파일 1줄 읽기
- fclose : 파일 닫기
- fgetcsv : csv파일을 열었을 때 1줄을 읽어서 배열로 반환
- fputcsv : 배열을 csv파일에 쓰기
- file_exists : 파일 존재 여부
- is_readable : 읽기 가능 확인
- is_writable : 쓰기 가능 확인
웹 통신
file_get_contents 등으로 다른 웹사이트와 통신을 할 수 있다.
- http_build_query : 배열의 key-value를 쿼리스트링으로 변환
- json_decode : json형식 문자열을 배열로 변환
- json_encode : 배열을 json 문자열로 변환
- stream_context_create(‘http'=>array()) : 헤더 추가, 배열을 받는다. content에 쿼리스트링을 넣으면 POST 요청으로 전송 가능
- http_response_code : 응답 코드 변경
cURL
- curl_init : url을 curl로 변환
- curl_setopt : 요청/응답 설정
- curl_exec : 실행
- curl_getinfo : 접속 정보 가져오기
- curl_errno : 에러 번호
- curl_version : curl 버전 확인
테스팅
- 사전 작업 : PHP 유닛 설치
- 클래스에 PHPUnit_Framework_TestCast를 상속한다.
- phpunit.phar 테스트php파일 실행
날짜 처리
new Datetime()으로 현재 시각을 얻을 수 있다. 메소드로 format을 가지고 있으며 형식 문자에 따라 출력가능하다. 설정 파일에서 date.timezone을 설정하거나 date_defualt_timezone_set함수를 사용해 시간대를 설정할 수 있다.
- setDate : datetime의 시간 지정
- checkDate : 날짜의 실제 존재 여부
- modify : 현재 날짜에서 변경
- diff : 두 날짜 차이 계산