인스턴스의 생성
클래스가 선언되고나면, 선언된 클래스로부터 인스턴스를 생성할 수 있다.
$객체이름 = new 클래스이름(인수1, 인수2, .. );
클래스 멤버에 접근
클래스 프로퍼티에 접근하거나 메소드를 호출할 때는 화살표 기호를 사용.
PHP에서는 프로퍼티, 메소드의 접근 범위를 제한할 수도 있으므로, 클래스 외부에서는 접근 제어자에 따라 접근이 가능할 수 있고 불가능할 수도 있다.
$객체이름 -> 프로퍼티 이름;
$객체 이름-> 메소드 이름;
또한, 객체 내부에서 해당 인스턴스의 프로퍼티에 접근하고 싶을 때는 특별한 변수인 $this를 사용할 수 있다.
$this 변수는 해당 인스턴스가 바로 자기 자신을 가리키는데 사용하는 변수
$this -> 프로퍼티 이름;
public : 외부로 공개, 해당 객체를 사용하는 어디에서나 직접 접근이 가능
private: 선언된 멤버는 외부로 공개가 되지 않고, 해당 클래스의 멤버에서만 접근이 가능하다.
protected: 선언된 멤버는 상위 클래스에 대해서는 public 멤버처럼 취급되며, 외부에서는 private멤버처럼 취급된다.
해당 클래스의 멤버와 해당 클래스를 상속받은 자식 클래스에서만 접근이 가능하다.
class ClassName
{
public $publicVar;
private $privateVar;
protected $protectedVar;
public function __constructor()
{
$this->publicVar = "public property<br>";
$this->privateVar = "private property<br>";
$this->protectedVar = "protected property<br>";
}
public function publicMethod()
{
echo "public method<br>";
}
protected function protectedMethod()
{
echo "protected method<br>";
}
private function privateMethod()
{
echo "private method<br>";
}
}
$object = new ClassName();
echo $object->publicVar; // 접근 가능
//echo $object->protectedVar; // 접근 불가능
//echo $object->privatev; // 접근 불가능
$object->publicMethod(); // 호출 가능
//$object->protectedMethod(); // 호출 불가능
//$object->privateMethod(); // 호출 불가능
Static 키워드
정적 멤버의 특징
1. static 키워드로 선언된 정적 프로퍼티는 인스턴스화된 객체에서는 접근할 수 없다.
2. static 키워드로 선언된 정적 메소드는 인스턴스화된 객체에서도 접근할 수 있다.
3. 정적 메소드 내에서는 $this 의사 변수를 사용할 수 없다.
class StaticMember
{
public static $staticProperty = "static property";
public static function showProperty()
{
echo self::$staticProperty;."<br>";
}
}
echo StaticMember::showProperty(); // 호출 가능
echo StaticMember::$staticProperty; // 접근 가능
$var = new StaticMember(); // 인스턴스 생성
echo $var->showProperty(); // 호출 가능
//echo $var->$staticProperty; // 접근 불가능
범위 지정 연산자(::)
클래스의 프로퍼티나 메소드에 접근하기 위해서는 인스턴스를 생성하고 , 화살표 연산자(->)를 사용해야한다.
하지만, 단순히 클래스의 정의 내에서 프로퍼티나 메소드를 사용하고 싶을 때는 범위 지정 연산자(::)를 사용할 수 있다.
범위 지정 연산자(::)는 클래스의 상수, 정적(static) 멤버 또는 재정의된 멤버에 접근할 수 있게 해줍니다.
echo 다른클래스명::CONSTANT;
'Language > PHP' 카테고리의 다른 글
[ERROR] Fatal error Call to a member function on a non-object (0) | 2022.11.28 |
---|---|
PHP 함수 (0) | 2022.09.02 |
PHP의 배열 (0) | 2022.09.02 |
타입변환, 기타 연산자 (0) | 2022.09.02 |
PHP 기본 타입 (0) | 2022.09.02 |