간단한 설명 PHP OOP vs 프로시저?
저는 PHP를 배우고 싶고 OOP와 프로시저에 대한 아이디어를 얻고 싶습니다.OOP vs 프로시저에 대한 다른 블로그나 튜토리얼을 읽었는데도 그 방법을 이해할 수 없습니다.
OOP와 절차
- 어떤 걸 배워야 하죠?
- 코드의 차이는 무엇입니까?어떤 효과가 있습니까?
- 어떻게 하면 OOP aproach에서 PHP 프레임워크가 도움이 될까요? (CodeIgniter를 배우고 싶습니다.)
- 절차에 프레임워크가 필요합니까?
두 가지 모두 코드 차이를 꼭 알고 싶습니다.OOP에 대한 저의 이해는 같은 클래스를 만들고 액세스할 수 있다는 것입니다.(그게 맞는지 모르겠어요)
배경:당신은 다음과 같은 "간단한 설명"을 요구했습니다.
- 전문용어를 사용하지 않고 알기 쉬운 개요를 원합니다.
- 당신은 처음부터 배울 수 있는 무언가를 원한다.
- 당신은 어떤 두 사람도 같은 방식으로 질문에 대답할 수 없다는 것을 발견했고, 그것은 혼란스럽다.그래서 간단한 설명을 요구하시는 거군요
짧은 No-Jargon 답변:
- 많은 입문 설명들이 "OOP real world"의 예시로 바로 들어갑니다.그것들은 도움보다는 혼란스러운 경향이 있기 때문에, 일단은 무시해도 좋습니다.
- 소스코드는 단순히 개별 파일에 저장되는 기능의 "청크"라고 생각할 수 있습니다.
- 이러한 「청크」를 정리하는 방법은, 프로그래밍 언어의 표기법, 개발자의 배경이나 트레이닝, 또는 지극히 낡은 개인의 취향에 의해서 다릅니다.
- OOP와 프로시저 프로그래밍은 코드의 "청크"를 구성 및 배열하는 방법에 대해 일반적으로 인식되는 두 가지 주요 방법론입니다.
긴 No-Jargon 답변:
절차와 OOP는 컴퓨터 프로그래밍의 기본적인 문제 중 하나일 뿐입니다.코드를 알기 쉽게 하는 방법, 프로페셔널하게 유지 보수하는 방법 등입니다.OOP의 몇 가지 원칙을 따르는 "프로시저" 코드를 실제로 작성할 수 있으므로 두 가지 코드가 반드시 반대되는 것은 아닙니다.
다른 객체 지향 프로그래밍 언어(PHP는 "새로운 블록의 아이")를 배우면 이해도가 높아집니다.
다음은 경험을 쌓을 때 습득해야 할 사항에 대한 간략한 개요입니다.
유용한 작업을 수행하는 PHP 소스 코드를 작성할 수 있습니다.
유용한 작업을 코드의 "청크"로 구성할 수 있습니다.
코드가 저장되는 개별 파일과 독립적으로 "청크"를 생각할 수 있습니다.
이러한 코드의 "청크"는 전달된 파라미터에 따라 다르게 동작할 수 있습니다.
매개 변수를 받아들이는 코드 청크를 "함수"라고 합니다.
함수는 함께 "chunk"할 수 있으며, 여기에는 다양한 방법이 있습니다.
- 예를 들어, 당신이 평생 써온 모든 함수가 포함된 하나의 큰 PHP 파일이 함수 이름별로 알파벳 순서로 나열될 수 있습니다.
- 예를 들어 주제별로 정리된 함수를 가진 여러 개의 PHP 파일이 있을 수 있습니다(예를 들어 기본 문자열 조작을 수행하는 함수, 배열 처리를 위한 함수, 파일 입출력 함수 등).
OOP는 기능을 '클래스'로 통합하기 위한 특별한 방법입니다.
클래스는 하나의 통합된 전체로 취급할 수 있도록 하나의 "청킹" 코드 수준일 뿐입니다.
클래스는 메서드와 속성의 "청킹"으로 간주할 수 있습니다.
- 메서드는 단순히 어떤 의미 있는 방식으로 서로 논리적으로 관련된 함수입니다."방법"과 "기능"이라는 단어는 기본적으로 같은 것을 가리키는 두 개의 다른 용어입니다.
- 속성은 클래스와 관련된 단순한 데이터 값입니다.클래스 내의 여러 함수에 액세스할 수 있어야 하기 때문에 이들 값은 의도적으로 개별 함수에 격리되지 않습니다.
- 예를 들어, 천문학에 관한 많은 방법을 가지고 있는 경우, 그 클래스의 속성은 모든 천문학 방법이 알아야 하는 특정 유명한 숫자에 대한 값일 수 있습니다(예를 들어 파이, 빛의 속도, 특정 행성 간의 거리 등).
- 여기서 대부분의 OOP 설명은 "실제 사례"로 나뉘기 때문에 쉽게 주제를 벗어날 수 있습니다.종종 "실제 세계"는 특정 개인이나 집단의 존재론적 관점을 완곡하게 표현한다.그것은 다른 사람에게 가르칠 수 있을 정도로 개념을 잘 이해하고 있을 때에만 도움이 되는 경향이 있다.
- OOP를 혼란 없이 이해하려면 일단 "실제" 예제를 생략하고 코드에 초점을 맞추면 됩니다.클래스는 단순히 함수(메서드)와 속성(데이터)을 PHP 코드로 저장하기 위한 방법으로, 각 "청크"는 특정 토픽 또는 일부 기능을 처리합니다.시작하기 전에 알아야 할 것은 이것뿐입니다.
클래스는 매우 높은 수준에서 이해, 사용 및 유지보수가 용이한 방법으로 코드를 구성할 수 있으므로 유용합니다.
많은 기능을 작성해, 많은 클래스로 편성해, 그것들을 쿨하게 조합하면, 모든 것을 패키지화해 「프레임워크」라고 부릅니다.
프레임워크는 코드 구성 방식을 좋아하고 작업 스타일, 선호도, 가치관, 세계 지배 계획 등에 적합하기 때문에 한 명 이상의 사람들이 동의하는 차상위 수준의 "청킹"입니다.
「 」를 참조해 주세요.
OOP는 디자인 패턴에 불과합니다.이제 막 시작하는 경우 절차적 접근법에 초점을 맞추어 기본을 학습합니다.가장 중요한 것은 루프, 조건 및 기타 절차 호출과 같은 기본 원칙을 숙지하는 것입니다.
프로시저 코드를 작성하는 동안 단일 소스 파일 내에 관련 메서드를 추가하는 습관을 들이십시오.프로시저를 논리 단위로 분할하는 방법을 학습하면, 벌써 오브젝트 지향적이 됩니다.기본적으로 오브젝트는 단순히 같은 데이터 집합에서 동작하기 때문에 서로 관련된 메서드의 집합일 뿐입니다.(여기서는 데이터베이스가 아니라 애플리케이션 데이터입니다!)
OO는 모든 것을 간단한 블록으로 나누어 코드를 보다 논리적으로 만드는 데 주로 사용됩니다.적절한 블록을 조합하면 완전한 어플리케이션을 얻을 수 있습니다.OO는 당신의 모든 문제를 해결할 수 있는 은빛 총알이나 황금 망치가 아닙니다.하지만 그게 하는 일은 코드를 이해하기 쉽게 만드는 거예요.
한편, 어떤 사람들은 수백 가지의 방법으로 거대한 슈퍼 오브젝트로 바꾸는 것만으로 여전히 사물을 완전히 엉망으로 만들 수 있다.이러한 객체들은 단순히 실질적인 논리 없이 엄청난 양의 방법들이 결합되어 있기 때문에 일반적인 절차적 접근과 크게 다르지 않습니다.사람들이 OOP를 너무 빨리 시작하면 그것은 실수하기 쉽습니다.
둘 다 배워야 해요.오브젝트는 존재하는 많은 가능한 추상화 중 하나일 뿐이며, 추상화는 궁극적으로 프로그래밍의 모든 것입니다.즉, 절차적인 것부터 시작해서 나중에 개체를 추가합니다. PHP 객체의 내부 기능은 절차적이기 때문입니다.
프레임워크에 대해서는 먼저 언어의 기본을 배우고, 실험 프로그램을 쓰는 등입니다.나중에 프레임워크에 익숙해지고 그 중 일부가 어떤 맥락에서 유용한지 스스로 생각해 볼 수 있습니다.그것들은 절대 의무사항이 아닙니다.
위의 훌륭한 답변을 덧붙입니다.OOP는 코딩 스타일의 자연스러운 진행이라고 생각하셔야 합니다.작은 프로그램을 쓰기 시작할 때 몇 줄의 php 코드를 조합하여 함수로 그룹화하고 더 많은 함수를 쓸수록 클래스로 정리할 필요성을 느낄 수 있습니다.OOP는 코드를 더 잘 구조화함으로써 코드 유지보수가 더 쉬워집니다.
프로시저 php와 oop은 동일한 php 코드를 사용합니다.유일한 차이점은 절차상 한 가지 작업에 집중한다는 것입니다.op에서는 코드의 다양한 영역에서 재사용할 수 있는 패턴 또는 청크를 사용하여 코드를 구성합니다.
간단한 답은 php를 알고 이해해야 한다는 것입니다.php.net에서 배울 수 있습니다.이해하면 코드를 척으로 정리할 수 있습니다.
절차 코드는 함수, 변수를 사용합니다.
정보를 얻으면 함수와 변수를 클래스로 정리할 수 있습니다.함수를 메서드로, 변수를 속성으로 부르기 시작합니다.
행운을 빌어요.
PHP의 모든 것을 OOP하려고 하면 혼란스럽고 복잡해 보입니다.내장 함수의 경우 절차 구문을 고수하고 패키지와 라이브러리의 경우 OOP를 고수하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/1530868/simple-explanation-php-oop-vs-procedural
'source' 카테고리의 다른 글
암호화 및 복호화, md5 (0) | 2022.09.11 |
---|---|
통합 테스트에서 콩 덮어쓰기 (0) | 2022.09.11 |
원시 길이 배열을 긴 길이 목록으로 변환 (0) | 2022.09.11 |
스프링 부트:최대 연결 수 등의 JDBC 풀 속성을 설정하려면 어떻게 해야 합니까? (0) | 2022.09.11 |
Java에서 익명 내부 클래스를 정적으로 만들 수 있습니까? (0) | 2022.09.11 |