2013-06-20 2 views
4

OOP 프로그래밍을 배우기 시작하면서 모든 것이 객체라는 것을 알게되었습니다. 대부분의 시간 동안 나는 PHP로 발전한다. 배열은 여기서 중요한 역할을합니다. 대부분의 경우 C#과 같은 언어에서는 배열이 아닌 객체를 사용하고 전달해야합니다. 예를 들어배열 대신 객체를 사용하는 PHP

:

Class Product 
{ 
    private $data = array(); 

    public function __construct() 
    { 
     $this->data['setting_1'] = 'a'; 
     $this->data['setting_2'] = 'b'; 
     $this->data['setting_3'] = 'c'; 
     $this->data['setting_4'] = 'd'; 
     $this->data['setting_5'] = 'e'; 

    } 
} 

당신이 PHP를 사용하면 모든 클래스를 만들 수있는 어떤 의미가 있습니까? 예를 들어 다음

Class Product 
{ 
    private $setting_1, $setting_2, $setting_3, $setting_4, $setting_5; 
} 

그리고 다른 클래스 (. 예를 들어 모델)에서 일류 상품을 인스턴스화 (컨트롤러 예.) 개체 대신 배열을 반환?

답변

2

"모든 것이 대상"이라는 사고 방식에서 1 일째부터 OO 기반 언어에 적용된다는 사실을 명심하십시오. PHP는 그 언어 중 하나가 아니며 사실 후에 객체가 추가되었습니다. 따라서 PHP의 간단한 변수 유형은 객체가 아니기 때문에 더 작은 메모리 인 &입니다.

머리카락이 찢어 지지만 PHP에서 객체를 사용할 필요가 없다면 단순한 배열은 배열을 포함하는 객체보다 가볍습니다. 더 가벼워 짐에 따라 램 사용량이 적어지고 조금 더 빨리 달릴 수 있습니다.

PHP를 작성하는 가장 좋은 방법은 KISS (Keep It Simple Stupid)입니다.

4

대답은 간단합니다.

모든

그냥 이상적인 객체에게 있습니다.

대부분의 실제 OOP 언어에는 간단한 데이터 유형이 있습니다. 자바 또는 CSharp에서도. PHP에서는 객체가 아닌 복잡한 데이터 유형의 배열도 있습니다. 물론 OOP 컨텍스트에서 사용하는 것은 걱정할 필요가 없습니다.

강력한 어레이 데이터 유형을 갖는 것이 단점보다 유리하다는 점에 유의하십시오. 제 의견으로는 PHP의 가장 부족한 OOP 기능은 다형성입니다, btw.


그러나 PHP5은 PHP 코어 분포의 일부 소위 Standard PHP Library (SPL) 확장에 iteratorsdata structures과 모음을 도입했다. 당신은 그들을 볼 수 있지만, 대부분 경우 배열 데이터 형식은 잘 작동합니다 (그리고 performant).

2

응답 "PHP를 사용할 때 모든 것을위한 클래스를 만들 수 있습니까?" "PHP를 사용할 때 모든 것에 대해 클래스에서 속성을 만들면 어떤 감각이 있습니까?"

예, 사용 된 모든 것이 배열 일 때 다른 사람의 코드로 개발하는 것은 매우 어렵습니다. 특히 상수가 없으면 잘못 입력하여 버그를 만들어내는 것이 매우 어렵습니다.

또한 "모든 것을위한 개체 만들기"에 대한 이야기가 아니라 속성에 대한 목록 (배열)과 내 대답을 기반으로 한 값 목록입니다.

2

아니요 모든 것이 클래스에 있어야하는 것은 아닙니다. 이것은 Java가 아닙니다. PHP 멀티 패러다임입니다. 즉, 전체 돼지를 사용하지 않고 일부 객체 지향을 사용하는 것이 완전히 합법적이라는 뜻입니다. OOP는 당신이 얼마나 끔찍한지를 알려주지 만, OOP는 전반적인 복잡성을 줄일 때만 가치가 있습니다. 클래스에서 모든 값을 래핑하면 수행하기 위해 의 복잡도가 추가되어 실질적인 이득을 얻지 못합니다.

클래스는 기본적으로 고유 한 동작을하는 데이터의 템플릿입니다. 데이터와 관련된 동작 (특수한 구조, 유효성 검사, 해석 또는 지속성)이 필요하지 않은 경우 데이터를 객체로 래핑하는 것은 종종 과도한 작업입니다.

+0

'OOP는 전반적인 복잡성을 줄일 때만 가치가 있습니다 .' ... OOP-wonk는 이것을 확인합니다. +1. 물론 '복잡함'옆에 OOP 스타일을 사용하는 다른 이유가 있습니다. '유연성', '재사용 성'처럼 ... – hek2mgl

+0

@ hek2mgl : 유연성과 재사용 가능성은 일반적으로 전체적인 복잡성을 줄입니다. :) 그리고 그들이하지 않는 곳에, 그들은 실제로 방해가 될 수 있습니다. 거의 모든 사람들이 무한한 유연성과 재사용 성을 염두에두고 작성했으며, 그로 인해 커다란 털이 엉망이되어 버렸다. 지금 작동하고 나중에 일반성을 추가 할 때까지 기다릴 필요가있을 때 언제 어디서나 많은 것을 얻을 수 있습니다. – cHao

관련 문제