간단한 설명 PHP OOP 대 절차?


106

PHP를 배우고 OOP와 절차에 대한 아이디어를 얻고 싶습니다. OOP와 Procedural에 대한 다른 블로그와 자습서를 읽었지만 여전히 접근 방식을 이해할 수 없습니다.

OOP 대 절차

  1. 무엇을 배워야합니까?
  2. 코드의 차이점은 무엇입니까? 효과는 무엇입니까?
  3. PHP 프레임 워크가 OOP aproach에서 어떻게 도움이 될 수 있습니까? (CodeIgniter를 배우고 싶습니다)
  4. 절차에 프레임 워크가 필요합니까?

나는 둘 다의 코드 차이를 정말로 알고 싶다. OOP에 대한 나의 이해는 당신이 같은 클래스를 만들고 액세스 할 수 있다는 것입니다. (정확한지 모르겠습니다).

감사!



1
이것은 하나의 매우 긴 링크없는 얼굴
펠릭스 Gagnon의-Grenier의



답변:


279

배경 : 다음을 제안하는 "간단한 설명"을 요청했습니다.

  1. 전문 용어없이 말도 안되는 개요 원합니다.
  2. 처음부터 배우는 데 도움이되는 무언가를 원합니다.
  3. 당신은 두 사람이 같은 방식으로 질문에 대답하지 않는다는 것을 발견 했고 그것은 혼란 스럽습니다. 그것이 당신이 여기에 간단한 설명을 요구하는 이유입니다. 예?

짧고 전문적이지 않은 답변 :

  1. 많은 소개 설명이 "OOP 실제 세계"예제로 빠르게 이동합니다. 도움이되는 것 이상으로 혼란 스러울 수 있으므로 지금은 무시해도됩니다.
  2. 소스 코드는 단순히 개별 파일에 저장되는 기능의 "덩어리"라고 생각할 수 있습니다.
  3. 이러한 "덩어리"를 구성하는 방법에는 여러 가지가 있습니다. 프로그래밍 언어의 관습, 개발자의 배경 및 교육 또는 평범한 개인 취향에 따라 다릅니다.
  4. OOP 및 절차 적 프로그래밍은 코드 "덩어리"를 구성하고 배열하는 방법에 대해 일반적으로 인식되는 두 가지 주요 방법론입니다.

긴 비전문가 답변 :

절차 적 대 OOP는 컴퓨터 프로그래밍의 근본적인 문제 중 하나 일뿐입니다. 코드를 이해 하기 쉽게 만드는 방법 과 전문적으로 유지 관리 할 수있는 케이크 조각입니다 . 실제로 OOP의 일부 원칙을 따르는 "절차 적"코드를 작성할 수 있으므로 두 가지가 반드시 반대되는 것은 아닙니다.

다른 객체 지향 프로그래밍 언어 를 배우면 이해가 커질 것입니다. 그중에서 PHP는 "블록의 새로운 아이"입니다.

다음은 경험을 구축하면서 배울 내용에 대한 간략한 개요 입니다.

  • 유용한 작업을 수행 하는 PHP 소스 코드를 작성할 수 있습니다.
  • 유용한 작업을 코드 "덩어리" 로 구성 할 수 있습니다.
  • 저장된 개별 파일과 관계없이 코드의 "덩어리"를 생각할 수 있습니다.
  • 때때로 이러한 코드 "덩어리"는 전달 하는 매개 변수에 따라 다르게 작동합니다 .
  • 매개 변수를 허용하는 코드 덩어리를 "함수"라고합니다.
  • 함수는 함께 "청크"될 수 있으며 이를 수행하는 다른 방법이 있습니다.
    • 예를 들어 , 평생 동안 작성한 모든 함수가 포함 된 하나의 큰 PHP 파일을 함수 이름에 따라 알파벳순으로 나열 할 수 있습니다.
    • 예 : 주제별로 함께 묶인 함수가있는 여러 PHP 파일이있을 수 있습니다. [예 : 기본 문자열 조작을 수행하는 함수, 배열 처리를위한 함수, 파일 입력 / 출력을위한 함수 등]
  • OOP는 함수 를 "클래스"로 함께 "청크"하는 특별한 방법입니다.
  • 클래스는 통합 된 전체로 취급 할 수 있도록 함께 "청크" 코드 의 또 다른 수준입니다.
  • 클래스는 메서드속성 의 "청크"로 생각할 수 있습니다.

    • 메소드 는 단순히 의미있는 방식으로 서로 논리적으로 관련된 함수입니다. "방법"과 "기능"이라는 단어는 기본적으로 동일한 것을 나타내는 두 가지 다른 용어입니다.
    • 속성 은 단순히 클래스와 관련된 데이터 값입니다. 클래스의 함수 중 둘 이상 이 액세스 권한을 가져야 하기 때문에 의도적으로 개별 함수에 격리되지 않은 값입니다 .
      • 예를 들어 , 클래스에 천문학을 수행하기위한 여러 메서드가있는 경우 클래스의 속성은 모든 천문학 메서드가 알아야하는 특정 유명한 숫자의 값일 수 있습니다 (예 : Pi, 빛의 속도, 특정 행성 사이의 거리, 기타.).
    • 이것은 대부분의 OOP 설명이 " 실제 예제 " 로 분기되기 때문에 혼란스러워 지는 부분 입니다. 종종 "실제 세계"는 특정 개인의 존재 론적 관점에 대한 완곡 어법입니다. 즉 경향이 이미 개념을 이해 한 번만 유용한 다른 사람에게 가르 칠만큼 잘.
    • 혼란없이 OOP를 이해하려면 지금은 "실제"예제를 건너 뛰고 코드에만 집중하면됩니다. 클래스는 단순히 함수 (메서드라고도 함) 와 속성 (데이터라고도 함)을 하나 이상의 관련 "청크"에 PHP 코드 로 저장하는 방법입니다. 여기서 각 개별 "청크"는 특정 주제 또는 기능 부분을 처리합니다. 시작하기 위해 알아야 할 모든 것입니다.
  • 클래스는 코드 를 이해, 사용 및 유지 관리하기 쉬운 방식으로 매우 높은 수준 에서 구성 할 수 있기 때문에 유용 합니다.

  • 누군가가 많은 함수를 작성하고 많은 클래스로 구성하고 멋진 방식으로 함께 작동하도록 만들면 모든 것을 함께 패키지화하고 "프레임 워크"라고 합니다.
  • 프레임 워크는 코드 구성 방식을 좋아하고 작업 스타일, 선호도, 가치, 세상에 대한 계획에 적합하기 때문에 한 명 이상의 사람들이 동의 하는 다음으로 가장 높은 수준의 "청크" (코딩 스타일 및 규칙 포함)입니다. 지배 등

또한보십시오


1
@dreftymac : 내 뒤에서 어색하게 삭제하는 대신 내 추가 항목에서 개선 할 수있는 사항에 대한 피드백을 제공 할 수 있습니다. 정말. 건설적인 비평을 환영하며 여러분도 그렇게하도록 초대합니다.
Flavius

1
@Flavius ​​좋아요. 노력하고 시간을내어 추가해 주셔서 감사합니다. 그것에 대해 생각한 후, 당신이 만든 추가가 독자적인 대답을할만한 가치가 있다는 것이 합리적입니다.
dreftymac

2
한 가지 추가 : 클래스는 함수 데이터를 함께 덩어리로 묶는데도 유용하므로 매개 변수로 전달할 필요가 없습니다.
chiborg

1
특히 "프레임 워크"의 정의에 +1. 많은 사람들이 프레임 워크가 무엇인지 설명하려고한다고 들었는데, 여러분의 프레임 워크가 이해하기 가장 쉽다고 생각합니다.
TecBrat 2013 년

1
메이트 ... 이것은 내가 oop vs procedural에 대해 읽은 최고의 설명이며 나는 많이 읽었습니다! 대단한 작업은 정말 효과적이고 간단하며 요점으로 바로 이어집니다. 당신은 옳은 사람들이 항상 실제 사례를 사용하고 어떤 것을 이해하는 쉬운 방법이 아닙니다.
thechrishaddad

25

OOP는 디자인 패턴에 지나지 않습니다. 막 시작했다면 절차 적 접근 방식에 집중하여 기본 사항을 배우십시오. 가장 중요한 것은 루프, 조건 및 기타 프로 시저 호출과 같은 기본 원칙에 익숙해지는 것입니다.

절차 코드를 만드는 동안 단일 소스 파일 내에 관련 메서드를 추가하여 습관을 만드십시오. 절차를 논리 단위로 나누는 방법을 배우면 이미 객체 지향이되기 시작했습니다. 기본적으로 객체는 단순히 동일한 데이터 집합에서 작동하기 때문에 서로 관련된 메서드 모음에 지나지 않습니다. (여기에서는 데이터베이스가 아니라 애플리케이션 데이터!)

OO는 주로 모든 것을 간단한 블록으로 나누어 코드를보다 논리적으로 만드는 데 사용됩니다. 올바른 블록을 결합하면 완전한 애플리케이션을 얻을 수 있습니다. OO는 모든 문제를 해결할 수있는 은색 총알이나 황금 망치가 아닙니다. 그러나 그것이하는 일은 코드를 이해하기 쉽게 만드는 것입니다.

그런 다음 일부 사람들은 수백 가지 방법을 사용하여 단순히 객체를 거대한 슈퍼 객체로 바꾸는 것만으로 객체를 완전히 엉망으로 만들 수 있습니다. 이러한 객체는 실제 논리없이 엄청난 양의 메서드가 함께 결합되기 때문에 일반적인 절차 적 접근 방식과 크게 다르지 않습니다. 사람들이 OOP를 너무 빨리 시작하면 쉽게 만들 수있는 실수입니다.


3
좀 더 헷갈리는 OOP 코드를 발견했습니다. 예를 들어 prestashop의 배를 살펴보세요.
AndrewC 2013 년

Pretashop에 대한 좋은 점. Magento는 그 자체로 김이 나는 짐승이지만 Pretashop 또는 WooComm과 같은 대안이 더 나쁘기 때문에 우리는 그대로 유지하기로 결정했습니다.
PKHunter 2014 년

6

둘 다 배워야합니다. 객체는 존재하는 많은 가능한 추상화 중 하나 일 뿐이며, 추상화는 궁극적으로 프로그래밍의 전부입니다. 즉, PHP 객체의 내부는 어쨌든 절차 적이므로 절차적인 것부터 시작한 다음 나중에 객체를 추가하십시오.

프레임 워크에 관해서는; 먼저 언어의 기초를 배우고 일회용 실험 프로그램을 작성하십시오. 나중에는 프레임 워크를 숙지하고 고려할 수 있습니다 자신을 여부를 당신이 어떤 맥락에서 그들 중 일부는 유용하게 찾을 수 있습니다. 그들은 확실히 의무가 아닙니다.


6

위의 훌륭한 답변을 추가하려면. OOP는 코딩 스타일의 자연스러운 진행으로 볼 수 있습니다. 작은 프로그램을 작성하기 시작할 때 몇 줄의 PHP 코드를 모아서 함수로 그룹화하고 더 많은 함수를 작성할수록 필요를 느낄 수 있습니다. 수업으로 더 잘 정리할 수 있습니다. OOP는 코드를 더 잘 구성하여 더 나은 코드 유지 관리를 허용합니다.


6

절차 적 PHP와 oop은 동일한 PHP 코드를 사용합니다. 그렇다면 유일한 차이점은 절차를 사용하면 한 가지 작업에 집중한다는 것입니다. oop에서는 코드의 여러 영역에서 재사용 할 수있는 패턴이나 청크를 사용하여 코드를 구성합니다.

간단한 대답은 PHP를 알고 이해해야한다는 것입니다. php.net에서 배울 수 있습니다. 일단 이해하면 코드를 척으로 구성 할 수 있습니다.

절차 적 코드는 함수, 변수를 사용합니다.

일단 익숙해지면 함수와 변수를 클래스로 구성 할 수 있습니다. 함수를 메서드로, 변수를 속성으로 호출하기 시작합니다.

행운을 빕니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.