모든 카테고리 137

[PHP]sanitize_key() 함수

sanitize_key() 함수는 아래와 같이 정의되어있다. function sanitize_key( $key ) { $raw_key = $key; $key = strtolower( $key ); $key = preg_replace( '/[^a-z0-9_\-]/', '', $key ); /** * Filters a sanitized key string. * * @since 3.0.0 * * @param string $key Sanitized key. * @param string $raw_key The key prior to sanitization. */ return apply_filters( 'sanitize_key', $key, $raw_key ); } 모든 문자를 소문자로 변경하고, 정규표현식을따라서..

[PHP]::(double colon, Paamayim Nekudotayim)과 ->(arrow)의 차이

::는 정적 context에 사용된다. 어떠한 메소드나 프로퍼티가 static으로 선언될때 사용되는데 아래 예제를 참고하자 class Math { public static function sin($angle) { return ...; } } $result = Math::sin(123); -> 는 반대로 동적 context에서 사용된다. 아래 예제를 참고하자. class Hello { public function say() { echo 'hello!'; } } $h = new Hello(); $h->say(); 나는 참고로 ->는 ~안에 있는 이라고 해석 하는데, A->B라면 A안에 있는 B라고 생각을 하면 조금더 쉽게 이해할 수 있는 것 같다. 배운지 얼마 되자 않은 지식이라 잘못된 부분이 있을 수있습니..

[PHP]객체 상속(extends)에 대하여

클래스를 만들면 서브클래스를 파생할수 있는데, 서브클래스를 사용하면 코드 재작성을 어느정도 막아준다. 이럴때 extends를 사용하여 상속을 한다. extends를 사용하면, 서브클래스에서 부모클래스의 속성을 사용할 수 있다. $instance = new CHILD; // CHILD 객체 생성 // name 속성에 SeungSAMI 대입 $instance->name = "SeungSAMI"; // password 속성에1234567890 대입 $instance->password = "1234567890"; // CHILD 객체의 display 함수 실행 $instance->display(); // Name : SeungSAMI Pass : 1234567890 출력 class A{ // A 객체 publi..

[PHP]정적(static)에 대하여

instance간에 서로 데이터를 공유해야 할 경우 이러한 데이터를 static 멤버라고 한다. static멤버에는 변수와 메소드가 존재 하는데 class::변수명 으로 접근을 한다 ::는 스코프 해결 연산자이다. 이 ::는 static과 같은 클래스의 재정의된 프로퍼티나 메소드에 접근할수 있도록 해주는 토큰이다. 정적 메소드의 호출은 마찬가지로 class::메소드명() 으로 접근한다. 정적메소드란 객체로부터가 아닌 클래스로부터 호출되는 메소드를 의미한다. 이 정적 메소드는 어떤 객체 속성에도 접근성을 갖지 않는다. class A { static function print_hello() { echo "Hello World!"; } } A::print_hello(); // A클래스의 static형 prin..

[PHP]include와 require의 차이

두 함수 모두 구문이 여러파일로 나누어진 코드를 불러오는 기능을 가지고 있다. 두 함수는 아무 에러 없이 실행을 마친다면 차이점이 존재하지 않지만, 에러가 발생하는 경우에는 처리하는 방법이 각각 다르다. 간단하게 두 함수를 구분하여 보자 require() 에러 상황시에 Fatal error를 발생시키고, 코드의 실행을 중지시킨다. 그러므로 예외상황 발생시 코드를 중단해야 하는 경우에서 사용되고, 특히 DB나 필수 로직을 점검해야하는 코드를 포함하고 있는 경우에 사용하자. include() 에러 상황시에 경고를 발생시키고, 나머지 코드의 실행을 진행한다. 그러므로 단순하게 화면 출력을 위한 공통적인 파일을 포함할때 사용해서 코드가 진행하는데 막힘이 없게 할때 사용하자. 추가로, 뒤에 once가 붙는 구문의..

[PHP]인터페이스(interface)에 대하여

인터페이스(interface) abstract, final, interface는 php에서 대표적인 세가지 규제이다. 어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다. 만약 인터페이스에서 강제하고 있는 메소드를 구현하지 않으면 이 에플리케이션은 컴파일 조차 되지 않는다. interface I{ public function z(); } class A implements I{ public function z(){} } 클래스 A 뒤의 implements I는 이 클래스가 인터페이스 I를 구현하고 있다는 의미다. 그것은 3행의 interface I의 맴버인 public void z() 메소드를 클래스 A가 반드시 포함하고 있어야 한다는 뜻이다...

카테고리 없음 2019.01.28

[PHP]final에 대하여

final 전에 설명했던 abstract이 상속을 강제하는 것이라면 final은 상속/변경을 금지하는 규제이다. 간단히 말해 실행되는 과정에서 한번 값이 정해진 이후에는 변수내의 값이 바뀌지 않도록 하는 규제이다. 아래의 두개의 예제는 전부 오류가 발생하는 예제이다. class A{ final function b(){} } class B extends A{ b(){} } 위의 예제의 경우 final 메소드인 b를 B클래스에서오버라이딩하려하기 때문에 오류가 발생한다. final class C{ final function b(){} } class D extends C{} 이경우에도 마찬가지로. final 클래스인 C를 extends를 통해 상속받으려 하고 있기 때문에 오류가 발생한다. 배운지 얼마 되자 않은..

카테고리 없음 2019.01.28

[PHP]추상(abstract)에대하여

추상(abstract) 추상 메소드 : 추상 메소드란 메소드의 시그니처만이 정의된 비어있는 메소드를 의미 메소드의 시그니처만 정의 되어 있고 이 메소드의 구체적인 구현은 하위 클래스에서 오버라이딩 해야 한다는 의미다. 이렇게 내용이 비어있는 메소드를 추상 메소드라고 부른다. 추상 메소드를 하나라도 포함하고 있는 클래스는 추상 클래스가 되고, 자연스럽게 클래스의 이름 앞에 abstract가 붙는다. abstract class A{ public abstract function b(); } 위의 예제는 추상클래스의 선언과 추상메소드의 선언이다. public abstract function c(){echo "Hello wordl!"} 위의 예제의 경우 추상메소드가 시그니처만이 정의 된 것이 아닌 본체가 정의 되..

[SQL]일반 함수 기초

일반 함수 기초 조건문1. NVL (expr1, expr2)if expr1 is not null then expr1 else expr2사용할 수 있는 데이터 유형은 날짜, 문자 및 숫자.데이터 유형이 일치해야 한다.다음 예시를 참고하자.12345select employee_id, salary, NVL(commission_pct,0.1), NVL(salary*commission_pct, salary*0.1)from employees; select employee_id, salary, NVL(commission_pct,0.1), salary*NVL(commission_pct,0.1)from employees;Colored by Color Scriptercs 2. NVL2 (expr1, expr2, expr3..