2011-09-05 2 views
2

PHP와 일반적으로 OOP로 시작합니다. 지금까지 내가 읽은 것에서 두 가지는 동의어 인 것처럼 보인다. 이 경우인가요? 그렇지 않다면 실질적으로 사람들이 사물과 수업을 언급 할 때 일반적으로 상호 교환 적으로 용어를 사용합니까?클래스와 객체는 PHP에서 동일한 것입니까?

+0

@Jared Farrish을 적용 다음과 같이보고 당신을 탓하지 않고, 나는 모든 것을 깨끗하게하려고했습니다. 이것은 종종 개념 오해이기 때문입니다. – zerkms

+0

@zerkms - 그런 일이 발생합니다. 표시된 대답조차도 명백한 결함이있었습니다. C'est la vie. –

답변

6

일반적으로 클래스의 인스턴스로 개체를 참조합니다.

일부 수업은 Employee입니다.

class Employee { 
    var $name; 
    function get_name () { return $this->name; } 
    function set_name ($new_name) { $this->name = $new_name; } 
} 

는 그리고 당신은 그것의 인스턴스가 좋아 선언

$assistant = new Employee(); 

Employee는 클래스입니다. $assistant은 객체이므로 Employee 클래스의 인스턴스입니다.

질문에 대답하기 위해 클래스는 객체가 아닙니다. 클래스를 인스턴스화 할 때 객체를 만듭니다.

+3

말하자면 클래스 이름 앞에 달러가 없습니다. 감사합니다. –

+0

, 감사합니다. – Tom

+0

클래스는 여전히 인스턴스 *를 만든 후에도 * 객체가 아닙니다. 여전히 수업입니다. –

2

개체와 클래스는 일반적으로 같은 의미로 사용합니까? 다른 OOP 언어에서와 마찬가지로

호는, 클래스가 무엇인가에 대한 청사진처럼, 집들은 말한다. 객체는 빌드 된 후 실제 집입니다. 정말로 다른 것들.

// blueprint 
class House 
{ 
    public $color; 

    public function __construct($color = 'red') 
    { 
     $this->color = $color; 
    } 

} 

// make red house 
$redHouse = new House(); 

// make blue house 
$blueHouse = new House('blue'); 

// Now we have two different houses (objects) made from the same blueprint (class) 
+1

+1 은유를 나타냅니다. –

0

클래스는 개체의 정의입니다. 객체는 클래스의 인스턴스입니다. 예 :

class Parser { 
    public function parse() {} 
} 

...은 클래스입니다. "파서 클래스을 사용하여 텍스트를 구문 분석 할 수 있습니다."

$p = new Parser; 

이제는 $p이 대상입니다. 이것은 Parser 클래스의 인스턴스입니다.

이것은 특히 static 키워드에서 중요합니다. 정적 메서드 및 멤버는 객체가 아닌 클래스에 속합니다.

class Parser { 
    public static $type; 
    public $text; 
} 
$p1 = new Parser; 
$p2 = new Parser; 
$p1::$type = 'php'; 
$p1->text = 'sometext'; 
$p2->text = 'someothertext'; 
echo $p2::$type; //echos "php" 
echo $p1->text; //echos "sometext" 
1

분명히 동의어가 아니며, 책을 읽은 적이 있다면 책을 바꿔야 할 때입니다. 객체가 인스턴스 동안 :-)

클래스 유형이다.

간단한 예제는 정수입니다. "정수"는 유형을 나타내지 만 정수는 $x입니다. PHP에서는 강력한 유형의 시스템이 없으므로 완전히 명확하지는 않지만 아이디어를 얻길 바랍니다. 마찬가지로 array이 유형이지만 $v = array();은 배열 유형의 인스턴스 ($v)를 만듭니다. $y = new MyClass(); : 당신이 배열처럼 클래스와

, 당신은 대신에, 당신은 new 사용해야합니다, $y = MyClass();을 말할 수 없습니다.

0

질문에서의 을 삭제할 수 있으며 여전히 동일합니다.

클래스는 예를

class Person { 
} 

에 대한 객체를 정의하는 것은 사람 객체를 정의하는 클래스입니다. 당신이

austin = new Person() 

austin -> hair_color("brown") 

처럼 뭔가를 할 수 PHP에서 객체 메소드는 현재 당신이 뭔가를 할 수 있습니다 클래스 메소드와 객체 메소드를

class Person { 
    function hair_color(color) { 
    hair_color = color; 
    } 
} 

입니다 만들기 시작할 때

구분은 더 중요 얻을

class Person { 
    total = 0; 
    static function total_in_class() { 
    total++; 
    } 
} 

이제는 클래스 메서드이므로 모든 개체에 영향을줍니다. 같은 클래스의

그런 식으로 지금 내 PHP는 다음 클래스의 모든 객체는 것 루비에서

영향 때문에 즉 1. 에코해야하는 녹슨없는 경우

austin = new Person(); 
austin -> total_in_class 
tom = new Person(); 
echo tom->total 

확실히 우리는 모두 ;-)을 난 :

class Person 
    def hair_color(color) 
    hair_color = color; 
    end 

    def self.total_in_class() 
    total+=1 
    end 
end 

유사과 같은 개념

관련 문제