나는 이것을하는 방법을 알아 내려고 노력했지만 어떻게하는지 잘 모르겠습니다.
다음은 내가하려는 작업의 예입니다.
class test {
public newTest(){
function bigTest(){
//Big Test Here
}
function smallTest(){
//Small Test Here
}
}
public scoreTest(){
//Scoring code here;
}
}
문제가있는 부분은 다음과 같습니다. bigTest ()를 어떻게 호출합니까?
답변
이거 한번 해봐:
class test {
public function newTest(){
$this->bigTest();
$this->smallTest();
}
private function bigTest(){
//Big Test Here
}
private function smallTest(){
//Small Test Here
}
public function scoreTest(){
//Scoring code here;
}
}
$testObject = new test();
$testObject->newTest();
$testObject->scoreTest();
답변
제공 한 샘플은 유효한 PHP가 아니며 몇 가지 문제가 있습니다.
public scoreTest() {
...
}
올바른 함수 선언이 아닙니다. ‘function’키워드로 함수를 선언해야합니다.
구문은 다음과 같아야합니다.
public function scoreTest() {
...
}
둘째, public function () {}에 bigTest () 및 smallTest () 함수를 래핑해도이를 비공개로 만들지 않습니다. 두 가지 모두에 개별적으로 private 키워드를 사용해야합니다.
class test () {
public function newTest(){
$this->bigTest();
$this->smallTest();
}
private function bigTest(){
//Big Test Here
}
private function smallTest(){
//Small Test Here
}
public function scoreTest(){
//Scoring code here;
}
}
또한 클래스 선언 ( ‘Test’)에서 클래스 이름을 대문자로 사용하는 것이 관례입니다.
도움이 되었기를 바랍니다.
답변
class test {
public newTest(){
$this->bigTest();
$this->smallTest();
}
private function bigTest(){
//Big Test Here
}
private function smallTest(){
//Small Test Here
}
public scoreTest(){
//Scoring code here;
}
}
답변
나는 당신이 이와 같은 것을 찾고 있다고 생각합니다.
class test {
private $str = NULL;
public function newTest(){
$this->str .= 'function "newTest" called, ';
return $this;
}
public function bigTest(){
return $this->str . ' function "bigTest" called,';
}
public function smallTest(){
return $this->str . ' function "smallTest" called,';
}
public function scoreTest(){
return $this->str . ' function "scoreTest" called,';
}
}
$test = new test;
echo $test->newTest()->bigTest();
답변
newTest
해당 메서드 내에서 선언 된 함수를 “표시” 하려면 호출해야합니다 ( 함수 내 함수 참조 ). 그러나 그것은 정상적인 기능이며 방법은 없습니다.
답변
“함수 내 기능”을 갖기 위해, 내가 당신이 요구하는 것을 이해한다면, 새로운 Closure 기능을 활용할 수있는 PHP 5.3이 필요합니다.
따라서 다음을 가질 수 있습니다.
public function newTest() {
$bigTest = function() {
//Big Test Here
}
}
답변
클래스에서 인스턴스화 된 객체의 메서드 (new 문 사용)를 호출하려면이를 “가리켜 야”합니다. 외부에서 당신은 단지 새로운 문에 의해 생성 된 자원을 사용합니다. new에 의해 생성 된 PHP 개체 내에서 동일한 리소스를 $ this 변수에 저장합니다. 따라서 클래스 내에서 $ this로 메서드를 가리켜 야합니다. 클래스 smallTest
에서 클래스 내부에서 호출 하려면 실행하려는 새 명령문에 의해 생성 된 모든 객체를 PHP에 알려야합니다.
$this->smallTest();