질문은 제목에 있습니다.PHP에서는 메소드를 공개하지만 비 정적으로 어떻게 선언합니까?
답변
그들은 기본적으로 비 정적 : 정적으로 호출하는 경우
public function method() {
}
당신은 E_STRICT
을 얻을 것이다,하지만 난 당신이 쉽게에만 인스턴스에서 호출 될 수 있음을 시행 할 수 있다고 생각하지 않습니다 -
체크하려고한다면
Artefacto가 말한대로 $this
오류가 발생한다고 생각합니다.
isset($this)
을 할 수 있으며 설정되지 않은 경우 예외를 throw합니다.
'isset ($ this)'가'false'이면 예외를 던질 수 있습니다. – Artefacto
이것은 여전히 정적 함수로 호출 될 수 있습니다. –
@Artefacto 비 정적 메서드에서 명시 적으로 이렇게하는 코드를 보았습니까? 그것은 성가신 것처럼 보입니다. $ this가 설정되지 않은 경우 메서드 내부에 일종의 오류가 발생하기를 바랍니다. –
<?php
class abc() {
public function foo() {
...
}
}
$c = new abc();
$c->foo();
?>
foo()는 여전히 abc :: foo()를 통해 사용할 수 있습니다. –
네, 맞습니다. 나는 그것을 할 수있는 다른 방법을 모른다. 함수는 public과 object oriented입니다. – Aziz
<?php
class abc() {
public function foo() {
if (!isset($this)) {
throw new Exception('Method is non-static.');
exit();
}
}
}
$c = new abc();
$c->foo();
?>
는 테스트하지 않습니다.
- 1. 추상 객체 값 및 메소드를 스칼라로 어떻게 선언합니까?
- 2. 이 함수는 어떻게 선언합니까?
- 3. 할당자를 어떻게 선언합니까?
- 4. 왜 Objective-c 클래스 메소드에서 변수를 정적으로 선언합니까?
- 5. 함수를 정적으로 선언하고 나중에 비 정적으로 선언 : 표준입니까?
- 6. C에서 문자열 상수를 어떻게 선언합니까?
- 7. 익명 스레드에서 예외를 어떻게 선언합니까?
- 8. IDL에 클래스 생성자를 어떻게 선언합니까?
- 9. 어떻게 C++ 헤더에 배열을 선언합니까?
- 10. 외부 char 포인터를 어떻게 선언합니까?
- 11. PHP5.3 비 정적 변수 범위에서 정적으로 작동
- 12. PHP에서는 list/menu 옵션을 사용하여 어떻게 검색합니까?
- 13. specman에 고정 길이 목록을 어떻게 선언합니까?
- 14. 사용자가 차원을 지정할 수있는 배열을 어떻게 선언합니까?
- 15. "기타"대신 "가시성"범주에서 DependencyProperty를 어떻게 선언합니까?
- 16. Cucumber-Capybara로 플래시 변수가없는 것을 어떻게 선언합니까?
- 17. .h 파일에서 index = 0을 어떻게 선언합니까? iPhone
- 18. Ruby에서 NaN (숫자가 아님)을 어떻게 선언합니까?
- 19. C# 변수를 HTML 형식 변수로 어떻게 선언합니까?
- 20. C++에서는 바이너리 세마포를 어떻게 선언합니까?
- 21. 배열에 대한 포인터에 대한 포인터를 어떻게 선언합니까?
- 22. SBT에서 jboss에 대한 의존성을 어떻게 선언합니까?
- 23. Rspec에서 비 정적 메소드를 테스트 하시겠습니까?
- 24. 어떻게 정적 클래스를 정적으로 만들지 않습니까?
- 25. PHP- 비 객체에 메소드를 호출하지만, 분명히
- 26. 이 코드가 유형을 선언합니까?
- 27. PHP에서는 echo 대신 print를 사용해야합니까?
- 28. XSlt가 php에서는 작동하지 않지만 saxon은
- 29. WPF 컨트롤에서 EventHandler를 정적 또는 비 정적으로 선언하십시오.
- 30. 큰 클래스를 정적에서 비 정적으로 변환하는 단계는 무엇입니까?
@Gordon : 감사합니다. 이 문제를 해결하기 위해 질문을 업데이트 할 것입니다. –