클래스 메서드 내에서 함수를 호출하시겠습니까?
나는 이것을 어떻게 해야 할지 알아내려고 노력했지만, 어떻게 해야 할지 잘 모르겠다.
다음은 제가 하려는 일의 예입니다.
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() {
...
}
둘째, bigTest() 함수 및 smallTest() 함수를 public function() {}로 랩핑해도 private가 되지 않습니다.다음 두 가지 모두 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();
클래스에서 인스턴스화된 객체의 메서드를 호출하려면(new 문을 사용하여) 해당 메서드를 "지정"해야 합니다.외부에서 새 문에 의해 생성된 리소스를 사용할 수 있습니다.new에 의해 작성된 오브젝트 내 PHP는 동일한 자원을 $this 변수에 저장합니다.따라서 클래스 내에서는 $this로 메서드를 가리켜야 합니다.당신의 수업에서, 전화하기 위해smallTest
클래스 내부에서 실행할 새 스테이트먼트에 의해 작성된 모든 오브젝트 중 어느 것을 PHP에 전달해야 하는지, 그냥 다음과 같이 적습니다.
$this->smallTest();
"함수 내 기능"을 갖추기 위해서는 당신이 원하는 것을 이해한다면 새로운 Closure 기능을 이용할 수 있는 PHP 5.3이 필요합니다.
다음과 같은 이점이 있습니다.
public function newTest() {
$bigTest = function() {
//Big Test Here
}
}
class sampleClass
{
public function f1()
{
return "f1 run";
}
public function f2()
{
echo ("f2 run" );
$result = $this->f1();
echo ($result);
}
f2();
}
출력:
f2 실행 f1 실행
전화하셔야 합니다.newTest
해당 방법 내에서 선언된 기능을 "보여" 한다(기능 내 기능 참조).하지만 그건 그냥 일반적인 기능일 뿐 방법이 없어요.
예 1
class TestClass{
public function __call($name,$arg){
call_user_func($name,$arg);
}
}
class test {
public function newTest(){
function bigTest(){
echo 'Big Test Here';
}
function smallTest(){
echo 'Small Test Here';
}
$obj=new TestClass;
return $obj;
}
}
$rentry=new test;
$rentry->newTest()->bigTest();
예2
class test {
public function newTest($method_name){
function bigTest(){
echo 'Big Test Here';
}
function smallTest(){
echo 'Small Test Here';
}
if(function_exists( $method_name)){
call_user_func($method_name);
}
else{
echo 'method not exists';
}
}
}
$obj=new test;
$obj->newTest('bigTest')
를 사용할 수도 있습니다.self::CONST
대신$this->CONST
현재 클래스의 정적 변수 또는 함수를 호출하는 경우.
언급URL : https://stackoverflow.com/questions/1725165/calling-a-function-within-a-class-method
'programing' 카테고리의 다른 글
MySQL: 조인 유형의 빠른 분석 (0) | 2023.01.28 |
---|---|
IE9은 console.log를 지원합니까?실제 기능입니까? (0) | 2023.01.28 |
네스트된 디렉토리를 안전하게 작성하려면 어떻게 해야 합니까? (0) | 2023.01.28 |
* 대신 Sequelize(NodeJS)를 사용하여 특정 필드 지정 (0) | 2023.01.19 |
유니코드 문자열을 Python 문자열로 변환(추가 기호 포함) (0) | 2023.01.19 |