이 내가 결과 성공적으로 삽입개인 변수에 어떻게 액세스 할 수 있습니까?
를 얻을이 코드를 실행하면 내 수업
abstract class DataStore_Adapter { private $id; abstract function update(); abstract function insert(); function __construct() { $this-> id = 3; } function save() { if(! is_null($this->id)) { $this->update(); } else { $this->insert(); } } } class VS_DataStroe_Adapter extends DataStore_Adapter { function __construct() { parent:: save(); } function update() { echo "successfully updated!"; } function insert() { echo "successfully inserted!"; } } $vs_data = new VS_DataStroe_Adapter();
입니다!
난 제거하면
$ this-> ID = 3;
DataStore_Adapter의 생성자 메소드로부터
과 저 결과 제공) ( 저장 함수 내에 배치;
성공적으로 업데이트되었습니다.
이 동작에 대한 설명이 필요합니다. private 변수로 $ id를 선언 했으므로 DataStore_Adapter 클래스를 통해서만 액세스 할 수 있습니다. 하지만 내가 save() 메소드 하위 클래스를 초기화하면 그 값에 액세스 할 수 있습니다. 어떻게 가능합니까? 그리고 왜?
"하위 클래스는 그 값에 액세스 할 수 있습니다"라는 코드가 어디에 있습니까? 게시 한 코드에서 클래스 자체 만이 값에 액세스합니다. – DCoder
클래스 자체 (예 :'DataStore_Adapter')만이 예제에서 private 변수에 액세스하고 있습니까? 멤버 함수 내에서 private 멤버 변수에 액세스 할 때 아무런 문제가 없습니다 ... – BenM
ok, 위의 예제에서 id == null이 어떻게됩니까? 하위 클래스가이 부모 클래스에 액세스 할 때 DataStore_Adapter의 생성자가 호출 될 때마다 id가 null이 될 수 없을 때마다 생각했습니다. – guitarlass