betty boop PHP 고급 OOP 기술 시연
PHP 직렬화는 영속 객체를 지원하지 않습니다. OOP에서 영속 객체는 여러 애플리케이션의 참조 사이에서 상태와 기능을 유지할 수 있는 객체입니다. 즉, 객체를 파일이나 데이터베이스에 저장할 수 있다는 의미입니다. 나중에 로드됩니다. 이것이 소위 직렬화 메커니즘입니다. PHP에는 객체에 대해 호출할 수 있는 직렬화 메서드가 있으며 직렬화 메서드는 객체의 문자열 표현을 반환할 수 있습니다. 그러나 직렬화는 메서드가 아닌 객체의 멤버 데이터만 저장합니다.
PHP4에서는 객체를 문자열 $s로 직렬화한 다음 객체를 해제하고
객체를 $obj로 역직렬화하면 객체의 메서드를 계속 사용할 수 있습니다! (a) 이 동작이 향후 버전에서도 계속 작동할 것이라는 보장이 문서에 없기 때문에 나는 이 작업을 권장하지 않습니다. (b) 직렬화된 버전을 디스크에 저장하고 스크립트를 종료할 때 이로 인해 오해가 발생할 수 있습니다. 나중에 이 스크립트를 실행하면 문자열 표현에 메서드가 전혀 포함되지 않기 때문에 개체를 역직렬화할 때 개체의 메서드가 있을 것이라고 기대할 수 없습니다.
간단히 말하면 PHP의 직렬화는 객체의 멤버 변수를 저장하는 데 매우 유용합니다. (관련 배열 및 배열을 파일로 직렬화할 수도 있습니다).
예:
코드 복사 코드는 다음과 같습니다.
$obj=new Classfoo() ;
$str=serialize($obj);
//$str을 디스크에 저장
//몇 달 후
//디스크에서 str 로드
$obj2= unserialize($str)
문서에 따르면 멤버 데이터는 복원하지만 메서드는 복원하지 않습니다. 결과적으로 $obj2->x를 사용하는 것과 같은 방식으로 멤버 변수에 액세스할 수 있는 유일한 방법(다른 방법은 없습니다!)이 발생하므로 집에서 시도하지 마세요.
이 문제를 해결할 수 있는 몇 가지 방법이 있는데, 이 간결한 기사에 적합하지 않기 때문에 생략하겠습니다. 나는 PHP의 후속 버전에서 완전히 직렬화된 기능을 환영합니다.
데이터 저장을 위해 클래스 사용 PHP와 OOP의 가장 큰 장점 중 하나는 무언가를 작동할 클래스를 쉽게 정의하고 이를 사용하고 싶을 때마다 해당 클래스를 호출할 수 있다는 것입니다. 사용자가 제품 ID 번호를 선택하여 제품을 선택할 수 있는 HTML 양식이 있다고 가정합니다. 데이터베이스에 상품 정보가 있는데, 상품, 가격 등을 표시하고 싶습니다. 다양한 유형의 제품이 있으므로 동일한 작업이라도 제품마다 다른 의미를 가질 수 있습니다. 예를 들어, 소리를 표시한다는 것은 소리를 재생하는 것을 의미할 수 있지만 다른 종류의 제품에서는 데이터베이스에 저장된 이미지를 표시하는 것을 의미할 수 있습니다. OOP 또는 PHP를 사용하여 코딩을 줄이고 품질을 향상시킬 수 있습니다.
제품 클래스를 정의하고, 해당 클래스가 가져야 하는 메소드(예: 디스플레이)를 정의한 다음 제품 클래스(SoundItem 클래스, ViewableItem 클래스 등)에서 파생된 각 제품 유형에 대한 클래스를 정의합니다
. .), 제품 클래스의 메소드를 재정의하여 아이디어에 따라 작동하도록 만드세요.
데이터베이스에 있는 각 제품의 유형 필드에 따라 클래스 이름을 지정합니다. 일반적인 제품 테이블에는 (ID, 유형, 가격, 설명 등의 필드)... 그런 다음 처리 스크립트에서 검색할 수 있습니다. 데이터베이스에서 유형 값을 가져오고 유형이라는 개체를 인스턴스화합니다.
코드 복사 코드는 다음과 같습니다.
$obj=new $type();
$obj->action()
이것은 PHP의 매우 좋은 기능이므로 그럴 필요가 없습니다. 생각해 보세요. 객체 유형은 표시 메소드나 $obj의 다른 메소드를 호출하세요. 이 기술을 사용하면 새로운 유형의 개체를 추가하기 위해 스크립트를 수정할 필요가 없으며 이를 처리하기 위한 클래스만 있으면 됩니다.
이 기능은 매우 강력합니다. 모든 개체의 유형을 고려하지 않고 메서드를 정의하고, 다른 메서드의 다른 클래스에서 구현한 다음 기본 스크립트의 모든 개체에 사용하면 됩니다. if...else가 필요하지 않습니다. 프로그래머 두 명에게는
그저 행복할 뿐입니다.
이제 프로그래밍이 쉽고 유지 관리 비용이 저렴하며 재사용이 가능하다는 점에 동의하시나요?
프로그래머 그룹을 관리하는 경우 작업 할당은 간단합니다. 각 사람은 개체 유형과 이를 처리하는 클래스를 담당할 수 있습니다.
이 기술을 통해 국제화는 가능하며, 사용자가 선택한 언어 분야 등에 따라 해당 클래스를 적용하면 됩니다.
복사 및 복제
$obj의 객체를 생성할 때 $obj2=$obj로 객체를 복사할 수 있습니다. 새 객체는 $obj의 복사본이므로(참조가 아님) $ 당시 obj의 상태입니다. 때로는 obj 클래스와 같은 새 개체를 생성하고 싶지 않을 수도 있습니다. new 문을 사용하여 클래스의 생성자를 호출할 수 있습니다. 이는 직렬화 및 기본 클래스를 통해 PHP에서도 달성할 수 있지만 다른 모든 클래스는 기본 클래스에서 파생되어야 합니다.
위험 구역 진입
객체를 직렬화하면 어떤 형식의 문자열이 나오며, 관심이 있으면 조사할 수 있는데, 문자열에 클래스 이름( ! ), 다음과 같이 꺼낼 수 있습니다:
코드 복사 코드는 다음과 같습니다:
php
$herring=serialize($obj);
$vec=explode(':',$herring)
$nam=str_replace(""",'',$vec[2]) ;
따라서 "유니버스" 클래스를 만들고 모든 클래스가 유니버스에서 확장되도록 한다고 가정하면 다음과 같이 유니버스에서 복제 메서드를 정의할 수 있습니다.
코드 복사 코드는 다음과 같습니다.
function clone() {
$herring=serialize($this)
$vec=explore(' :',$herring);
$nam=str_replace(""",'',$vec[2]);
$ret=new $nam;
return $ret;
}
}
//그런 다음
$obj=new Something();
//우주에서 확장
$other=$obj->clone()
얻는 것은 new 메소드를 사용하고 생성자를 호출하여 생성된 객체와 동일한 새로운 Something 클래스 객체입니다. 이것이 여러분에게 유용한지는 모르겠지만 Universe 클래스는 파생 클래스입니다. 유일한 제한은
문이 현재 시간에 기록된다는 것입니다.
위 내용은 betty boop의 내용을 포함하여 betty boop PHP 고급 OOP 기술 데모를 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alipay PHP ...

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

세션 납치는 다음 단계를 통해 달성 할 수 있습니다. 1. 세션 ID를 얻으십시오. 2. 세션 ID 사용, 3. 세션을 활성 상태로 유지하십시오. PHP에서 세션 납치를 방지하는 방법에는 다음이 포함됩니다. 1. 세션 _regenerate_id () 함수를 사용하여 세션 ID를 재생산합니다. 2. 데이터베이스를 통해 세션 데이터를 저장하십시오.
