className::functionNmae()를 통해 결론, 인스턴스화, 부모, self
className::functionNmae()는 정적 메서드여야 함(공개 모드)
parent::functionNmae() 부모 클래스는 정적 메서드여야 합니다(공개 및 보호 모드)
self::functionNmae() 클래스는 정적 메서드여야 합니다. 메서드(세 가지 모드)
인스턴스화: 인스턴스화 후 공개 모드에서 정적 메서드 또는 일반 메서드에 액세스할 수 있습니다
직접 액세스(className을 통해: : functionNmae() 및 인스턴스화):
결론:
) className::functionNmae()를 통해 액세스
보호됨
| $obj->functionName( 인스턴스를 통해 액세스할 수 없습니다. ) | mae() 액세스
private
| 인스턴스 $obj->functionName()
<?<span>php </span><span>/*</span><span>* * * @authors HG (hg0728@qq.com) * @date 2015-05-26 17:12:02 * @version 1.0 </span><span>*/</span><span>header</span>("Content-type:text/html;charset=utf-8"<span>); </span><span>class</span><span> A { </span><span>static</span><span>$name</span>='这是类A的静态变量'<span>; </span><span>static</span><span>public</span><span>function</span><span> stc_pc(){ </span><span>echo</span> '这是类A的公共静态方法<br />'<span>; } </span><span>static</span><span>function</span><span> stc(){ </span><span>echo</span> '这是类A的静态方法<br />'<span>; } </span><span>static</span><span>protected</span><span>function</span><span> stc_pd(){ </span><span>echo</span> '这是类A受保护的静态方法<br />'<span>; } </span><span>static</span><span>private</span><span>function</span><span> stc_pe(){ </span><span>echo</span> '这是类A私有的静态方法<br />'<span>; } } A</span>::stc_pc();<span>//</span><span>可访问</span><span>A</span>::stc();<span>//</span><span>可访问</span><span>A</span>::<span>$name</span>;<span>//</span><span>不报错 //A::stc_pd();//不可访问 //A::stc_pe();//不可访问</span><span>echo</span> '<br><br>通过实例化访问<br><br>'<span>; </span><span>$a</span> = <span>new</span><span> A(); </span><span>$a</span>->stc_pc();<span>//</span><span>可访问</span><span>$a</span>->stc();<span>//</span><span>可访问 //$a->$name;//报错 //$a->stc_pd();//不可访问 //$a->stc_pe();//不可访问</span><span>/*</span><span>******************* | 可以 通过 className::functionNmae() 访问 public | | 可以 通过实例 $obj->functionName() 访问 | 不可 通过 className::functionNmae() 访问 protected | | 不可 通过实例 $obj->functionName() 访问 | 不可 通过 className::functionNmae() 访问 private | | 不可 通过实例 $obj->functionName() 访问 *******************</span><span>*/</span>결론:
self::functionNmae()는 정적 메서드여야 합니다(세 가지 모드 모두 사용 가능)
3. 하위 클래스(parent::functionNmae() 및 인스턴스화)를 통해 상위 클래스에 액세스합니다.<?<span>php </span><span>/*</span><span>* * * @authors HG (hg0728@qq.com) * @date 2015-05-26 17:18:50 * @version 1.0 </span><span>*/</span><span>header</span>("Content-type:text/html;charset=utf-8"<span>); </span><span>class</span><span> C { </span><span>static</span><span>$name</span> = "静态变量"<span>; </span><span>static</span><span>public</span><span>function</span><span> stc_pc(){ </span><span>echo</span> '静态公共方法<br>'<span>; self</span>::<span>stc_pd(); self</span>::<span>stc_pe(); self</span>::<span>stc(); </span><span>//</span><span>self::func();//报错但有结果</span><span> } </span><span>static</span><span>protected</span><span>function</span><span> stc_pd(){ </span><span>echo</span> '静态受保护方法<br>'<span>; } </span><span>static</span><span>private</span><span>function</span><span> stc_pe(){ </span><span>echo</span> '静态受保护方法<br>'<span>; } </span><span>static</span><span>function</span><span> stc(){ </span><span>echo</span> '静态普通方法<br>'<span>; } </span><span>function</span><span> func(){ </span><span>echo</span> '普通方法<br>'<span>; } } C</span>::<span>stc_pc(); </span><span>/*</span><span>***** self::functionNmae();需是静态方法(三种模式都可) *****</span><span>*/</span>결론:
parent::functionNmae()에 액세스할 수 없습니다.
$ obj->functionNmae(); 비공개에 접근할 수 없습니다
<?<span>php </span><span>/*</span><span>* * * @authors HG (hg0728@qq.com) * @date 2015-05-26 17:18:50 * @version 1.0 </span><span>*/</span><span>header</span>("Content-type:text/html;charset=utf-8"<span>); </span><span>include</span> '/class_a.php'<span>; </span><span>class</span> B <span>extends</span><span> A{ </span><span>static</span><span>public</span><span>function</span><span> index(){ parent</span>::<span>stc_pc(); parent</span>::<span>stc(); parent</span>::<span>stc_pd(); parent</span>::<span>$name</span>;<span>//</span><span>不报错 //parent::stc_pe();//不可访问</span><span>echo</span> '<br><br>通过实例化访问<br><br>'<span>; </span><span>$a</span> = <span>new</span><span> A(); </span><span>$a</span>-><span>stc_pc(); </span><span>$a</span>-><span>stc(); </span><span>$a</span>-><span>stc_pd(); </span><span>$a</span>-><span>$name</span>;<span>//</span><span>报错 //$a->stc_pe();//不可</span><span> } } B</span>::<span>index(); </span><span>/*</span><span>***** 在子类中通过: parent::functionNmae(); private不可访问 $obj->functionNmae(); private不可访问 *****</span><span>*/</span>