정적 및 비 정적 방법의 혼합 사용을 테스트하기위한 작은 테스트 시나리오를 작성했습니다. public 메서드를 정적 메서드로 호출하면 엄격한 경고가 생성됩니다. 아마도 정적 메서드를 public 메서드로 호출하면 비슷한 경고가 생성 될 것이라고 생각하게되었지만 그렇지 않았습니다.정적 메서드를 공용 메서드로 호출 할 수 있습니까?
정적 메서드를 정적 메서드로 호출해도 괜찮습니까? 그렇게하는 데 어떤 결과가 있습니까?
<?php
class TestS {
static function _testS() {
echo("Hello Static<br>\n");
// Strict warning: Non-static method TestS::_tS() should not be
// called statically in TestS::_tS()
self::_tS();
}
public function _tS() {
echo("tS<br>\n");
}
public function _testP() {
echo("Hello Public<br>\n");
self::_tP();
}
static function _tP() {
echo("tP<br>\n");
}
public function _testSP() {
$this->_tP();
}
}
$test = new TestS();
echo("///////////<br>\n");
$test->_testP();
echo("///////////<br>\n");
TestS::_testS();
echo("///////////<br>\n");
$test->_testSP();
echo("///////////<br>\n");
정적 메서드를 사용하지 마십시오. –
환경 설정 이외의 정적 방법을 사용하지 않을 것이라는 확실한 주장이 있습니까? 저는 작은 유틸리티 함수를 많이 사용하여 전역 범위를 깨끗하게 유지하기 위해 정적 메서드/클래스를 사용하고 싶습니다. – forsvunnet
정적 메서드 및 변수 **의 문제는 ** 전역 적이라는 것입니다. –