백엔드 개발 PHP 튜토리얼 OOP 사상과 디자인

OOP 사상과 디자인

Dec 01, 2016 am 11:50 AM
oop

OOP - 객체 지향 프로그래밍. OOP 사고란 객체지향 그 자체의 개념을 말합니다. OOP 디자인은 모든 코드를 클래스로 캡슐화하는 것을 의미하지 않습니다. 왜냐하면 그것은 객체 지향 프로그래밍만을 의미하기 때문입니다.

OOP - 객체 지향 프로그래밍은 단지 연습일 뿐입니다. OOP 사고는 기본입니다. 중요한 것은 접근 방식이 아니라 달성하려는 실제 목표입니다.

JAVA 언어는 항상 대부분의 객체 지향 목표를 달성할 수 있습니다. 그 이유는 아주 간단합니다. 그것은 언어 자체의 한계 때문이다.

JAVA의 모든 것은 클래스에 있어야 합니다. 클래스 외부의 독립형 함수는 허용되지 않습니다. 디자인 패턴은 JAVA의 출현으로 인해 존재합니다. 이러한 관점에서 JAVA는 소프트웨어 세계의 사고 방식을 변화시켰습니다.

OOP의 목표는 코드가 SOLID 원칙을 준수하도록 만드는 것입니다. 이러한 원칙은 디자인 패턴에 관한 모든 책의 시작 부분에 소개됩니다.

하지만 이는 이론적인 목표입니다. 실제 목표는 우리가 하는 일을 왜 하는지 답하는 것입니다. 우리는 항상 미래를 알 수 없기 때문입니다. 수요가 어떻게 변할지는 알 수 없습니다. 오늘은 제한된 시간 동안만 단순화된 버전을 제공할 수 있을 것입니다. 하지만 앞으로는 확실히 확대될 것이다. 오늘 우리가 한 일이 모든 것을 다루었을지 모르지만 언젠가는 고려되지 않은 또 다른 구성 요소가 있다는 것을 알게 될 것입니다.

객체지향이 없다면 가장 간단한 스위치 케이스 구조로 완성했습니다. 이 때문에 우리는 핵심 코드를 재작업해야 했습니다. 그러나 코드가 SOLID 원칙을 준수한다면 기존 코드에 새 CLASS를 추가하기만 하면 됩니다.

찾기는 어렵지 않습니다. 플러그인 아이디어는 OOP에서 유래되었습니다. 그래서 이때 OOP를 살펴보면 단순히 흩어져 있는 코드를 클래스로 캡슐화하는 문제가 아닙니다.

SOLOD 원칙에 따라 무엇이 추상적이고 무엇이 구체적인지 명확히 해야 합니다. 우리는 제한된 문제별 코드만 제공하지만 모두 전체적인 추상화에 의존합니다. 동일한 유형의 새로운 특정 문제가 있는 경우 클래스를 추가하기만 하면 됩니다. 이것이 디자인 패턴 아이디어의 핵심이다.

OOP 디자인은 그것과는 거리가 멀다. 코드 가독성과 유지 관리성 역시 디렉토리와 문서에 따라 달라집니다. 표면적으로 이것은 중요한 세부 사항이 아닙니다. 그러나 현실은 매우 중요합니다. 특히 특정 문제에 대한 핵심 모듈 설계 또는 PHP 개발 프레임워크 설계. 디렉토리의 가독성이나 OOP 준수 여부에 따라 사람들이 디렉토리를 얼마나 빨리 이해하고 수용할 의지가 있는지가 결정됩니다. 예를 들어 SYSMFONY의 디렉터리 구조는 그다지 좋지 않습니다. 오래된 브랜드임에도 불구하고 초기에는 큰 시장을 점유했다. 그러나 시장은 여전히 ​​몇 가지 새로운 프레임워크로 나누어져 있습니다. 돌이켜보면 그런 코드들은 KOHANA처럼 디자인이 별로 좋지 않았지만 CI는 꽤 수용하기 쉬웠고 디렉토리 구조와도 연관이 있었습니다. 이는 일부 국내 프레임워크가 사용자에게 수용될 수 있는 이유이기도 합니다. 단지 중국어 버전이기 때문만은 아니다.

OOP 디자인의 아이디어는 단지 코드 측면이 아니라 아키텍처와 디자인의 모든 측면에서 나타난다고 볼 수 있습니다.

Php 프레임워크의 가장 큰 문제점은 오픈소스 시스템에는 대규모 프로젝트를 실제로 경험한 건축가만큼 충분한 경험을 가진 사람이 없기 때문입니다. 이것은 매우 변명의 여지가 있습니다. 그러나 기업이 오픈 소스를 사용하면 수년간 운영한 후 시스템이 더 커지고 복잡해지며, 사용하기 쉽고 유지 관리하기 쉬운 명확한 아키텍처를 갖지 못한다면 비극이 될 것입니다.

어떤 사람들은 이러한 회사들이 이를 활용하여 2차 개발이 필요한 고객을 위해 돈을 벌 수 있다고 말합니다. 사실 이런 종류의 돈을 버는 것은 항상 제한적입니다. 좋은 핵심 아키텍처가 진정한 소프트웨어 산업화를 가져올 것이기 때문입니다. 그리고 상당한 비용 절감이 있을 것입니다.

사실 그러고 보면 개발 프레임워크는 꽤 간단합니다. 한두 문장으로 요약할 수 있을 정도로 매우 간단합니다. 첫째, 사용자가 호출할 수 있는 다양한 클래스 라이브러리를 제공하므로 사용자가 더 적은 코드를 작성할 수 있습니다. 두 번째는 사용자가 필요한 플러그인을 쉽게 추가하고 사용자 개발을 줄일 수 있도록 하는 것입니다. 이것은 실제로 서로를 호출하는 관련 시스템입니다. MVC 시스템에서는 순수한 OOP 프레임워크이고 후자는 사용자의 코드를 호출하는 프레임워크입니다. 이와 관련하여 가장 눈에 띄는 것은 사용자 인터페이스 구성 요소입니다. PHP에는 이 범주에 속하는 프레임워크가 많이 있습니다. 그러나 그것들은 모두 매우 초보적이다. JAVA의 FCS나 TYPESTRY와 비교할 수 있는 것은 없습니다. 일부 초보자는 200KB 미만의 태그 엔진을 게시할 수도 있습니다. 코드를 보지 않고도 SOLID 원칙을 따르는 것은커녕 디자인 패턴도 없을 것이라고 상상할 수 있습니다. 그러면 확장 및 유지 관리에 상당한 문제가 발생합니다.

그래서 우리는 얼마나 많은 인터넷 회사들이 PHP를 기반으로 하는 웹사이트를 가지고 있는지 생각해 보았습니다. 겉으로는 PHP를 사용하면 비용이 절감되는 것처럼 보이지만 어느 정도까지 줄일 수 있을까요? 핵심은 여전히 ​​OOP 코드부터 OOP 아키텍처까지입니다. OOP 아키텍처 수준에 따라 기술 부서의 개발 효율성과 비용이 결정됩니다.


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

'PHP의 객체 지향 프로그래밍 소개: 개념에서 실습까지' 'PHP의 객체 지향 프로그래밍 소개: 개념에서 실습까지' Feb 25, 2024 pm 09:04 PM

객체 지향 프로그래밍이란 무엇입니까? 객체 지향 프로그래밍(OOP)은 실제 엔터티를 클래스로 추상화하고 객체를 사용하여 이러한 엔터티를 나타내는 프로그래밍 패러다임입니다. 클래스는 객체의 속성과 동작을 정의하고, 객체는 클래스를 인스턴스화합니다. OOP의 가장 큰 장점은 코드를 더 쉽게 이해하고 유지 관리하며 재사용할 수 있다는 것입니다. OOP의 기본 개념 OOP의 주요 개념에는 클래스, 개체, 속성 및 메서드가 포함됩니다. 클래스는 객체의 속성과 동작을 정의하는 객체의 청사진입니다. 객체는 클래스의 인스턴스이며 클래스의 모든 속성과 동작을 갖습니다. 속성은 데이터를 저장할 수 있는 개체의 특성입니다. 메소드는 객체의 데이터에 대해 작동할 수 있는 객체의 함수입니다. OOP의 장점 OOP의 주요 장점은 다음과 같습니다. 재사용성: OOP는 코드를 더 많이 만들 수 있습니다.

객체지향 프로그래밍에 Golang 함수 적용 객체지향 프로그래밍에 Golang 함수 적용 May 31, 2024 pm 07:36 PM

Go 함수는 객체의 메소드로 사용 가능합니다. 메소드는 객체의 필드와 메소드에 대한 액세스를 제공하는 객체와 연관된 함수입니다. Go에서 메소드는 func(receiver_type)identifier(parameters)return_type 구문을 사용하여 정의됩니다. 이 접근 방식은 캡슐화, 재사용 및 확장성을 제공함으로써 객체 지향 프로그래밍에서 중요한 역할을 합니다.

PHP OOP에서 함수 사용: Q&A PHP OOP에서 함수 사용: Q&A Apr 10, 2024 pm 09:27 PM

PHPOOP에는 클래스 메소드와 정적 메소드라는 두 가지 유형의 함수가 있습니다. 클래스 메서드는 특정 클래스에 속하며 해당 클래스의 인스턴스에 의해 호출됩니다. 정적 메서드는 어떤 클래스에도 속하지 않으며 클래스 이름을 통해 호출됩니다. 클래스 메소드는 publicfunction을 사용하여 선언되고, 정적 메소드는 publicstaticfunction을 사용하여 선언됩니다. 클래스 메소드는 객체 인스턴스($object->myMethod())를 통해 호출되고, 정적 메소드는 클래스 이름(MyClass::myStaticMethod())을 통해 직접 호출됩니다.

현대 웹 개발에서 PHP 객체 관계형 매핑 및 데이터베이스 추상화 계층의 진화 현대 웹 개발에서 PHP 객체 관계형 매핑 및 데이터베이스 추상화 계층의 진화 May 06, 2024 pm 03:51 PM

PHP에서 ORM 및 DAL의 발전: ORM은 데이터베이스 테이블을 PHP 개체에 매핑하여 작업을 단순화하지만 성능과 유연성에 영향을 미칠 수 있습니다. DAL은 이식성을 향상시키지만 인터페이스 복잡성을 증가시키고 효율성을 감소시키는 데이터베이스 작업의 추상화를 제공합니다. LaravelEloquent와 같은 ORM은 CRUD 작업에 사용될 수 있으며, PDODAL은 향상된 보안을 위해 매개변수화된 쿼리를 사용합니다. 애플리케이션 성능, 이식성 및 보안을 최적화하려면 프로젝트 요구 사항에 따라 적절한 도구를 선택하세요.

PHP OOP 함수 오버로딩에 대한 자세한 설명 PHP OOP 함수 오버로딩에 대한 자세한 설명 Apr 11, 2024 am 11:06 AM

PHP는 함수 오버로딩을 지원하지 않지만 이름은 같지만 매개변수 서명이 다른 클래스 메서드를 생성하여 이를 시뮬레이션할 수 있습니다. 이 접근 방식을 사용하면 동일한 클래스에서 동일한 기능을 가진 다양한 기능 구현을 제공할 수 있습니다.

PHP OOP 함수의 명명 규칙 및 사양 PHP OOP 함수의 명명 규칙 및 사양 Apr 11, 2024 am 10:36 AM

PHPOOP 함수 명명 규칙에는 파스칼 명명법(클래스 이름 및 인터페이스 이름에 대한 높은 낙타 표기법) 및 밑줄(멤버 변수, 상수, 함수 및 메서드 이름) 사용이 포함됩니다. 명명 규칙은 액세스 제어 문자(공개, 보호 및 개인) 및 접두사 규칙(이중 밑줄은 개인을 의미하고 단일 밑줄은 보호됨을 의미함)의 사용을 지정합니다. 실제 예제에서는 이러한 규칙에 따라 클래스, 멤버 변수 및 메서드를 정의하는 방법을 보여줍니다.

PHP OOP 함수의 수명주기에 대한 자세한 설명 PHP OOP 함수의 수명주기에 대한 자세한 설명 Apr 12, 2024 am 11:00 AM

PHPOOP 함수의 수명 주기는 1. 선언, 2. 참조, 4. 파기, 4단계로 구성됩니다. 선언되면 함수의 수명 주기가 시작되고, 참조되면 함수가 호출되어 실행되며, 소멸되면 함수 코드 블록이 실행되고, 함수 변수와 지역 변수가 소멸됩니다.

PHP OOP에서 함수 사용에 대한 모범 사례 PHP OOP에서 함수 사용에 대한 모범 사례 Apr 10, 2024 pm 09:30 PM

PHPOOP에서 함수 작업에 대한 모범 사례에는 네임스페이스를 사용하여 관련 함수를 그룹화하고 이름 충돌을 방지하는 것이 포함됩니다. 가독성과 일관성을 향상하려면 camelCase 표기법을 따르세요. 가독성을 높이고 오류를 감지하려면 매개변수 유형과 반환 값 유형을 지정하세요. 함수 호출을 단순화하려면 기본 매개변수 값을 사용하세요. 유지 관리 가능성을 높이려면 전역 함수를 사용하지 마세요. 함수의 목적에 따라 public, protected, private과 같은 적절한 메서드 가시성 수정자를 선택하세요.

See all articles