2015-01-16 3 views
-1

클래스 메서드를 직접 호출 할 때?PHP의 클래스 메서드 호출

<?php 
Class::method(); 
?> 

언제 객체를 주입 한 후에 클래스 메소드를 호출할까요?

<?php 
$object = new Class(); 
$object->method(); 
?> 

두 제품의 차이점은 무엇입니까? 객체

Class::method(); 

이 방법에서는 클래스 변수 $this->... 사용하지 않고 직접 통화 정적 클래스의 방법에 사용되는

+0

첫 번째는 정적 방법이라고 가정합니다 ... – Ankur

+0

직접 호출은 정적 방법이어야합니까? –

+0

[공식] (http://php.net/manual/en/language.oop5.basic.php) [문서] (http://php.net/manual/en/language.oop5. static.php)를 참조하십시오. – Passerby

답변

0

:: 범위 결정 연산자.

$object = new Class();new은 클래스의 생성 객체이며 객체가 클래스의 인스턴스 인 간단한 방법으로 object 의 클래스 변수를 사용할 수도 있습니다.

1

static으로 정의 된 메서드는 직접 호출됩니다. 이 두 번째 방식은 고정되지 않고,로가 같은 클래스 A의 객체에서 호출된다

A::function1(); 

class A 
{ 
public static function function1() 
    { 
    $a = "Hi"; 
    return $a; 
} 

public function function2() 
{ 
    $a = "Hi"; 
    return $a; 
} 

}

으로 호출 될 수 있도록 기능 1 추천 정적 인 아래

$object = new A(); 

$object->function2(); 
0

클래스 함수를 정적으로 만들면 첫 번째 경우와 같이 범위 분석 연산자를 사용하여 액세스 할 수 있습니다. 정적 함수 인 경우 $this은 함수 내부에서 사용할 수 없습니다.

<?php 
     class Product 
     { 

     public static function method() //static function 
     { 
      echo "static function" ; 
     } 
     } 

     Product::method(); // we can make direct call 
    ?> 

두 번째 경우에는 개체가 만들어지고 개체를 통해 클래스 메서드에 액세스하는 동안.

$object = new Class(); 
$object->method();